Please sign in first.
Submission #1667460
Source Code Expand
#include <cstdio>
#include <climits>
#include <algorithm>
using namespace std;
int main() {
int N; scanf("%d", &N);
static char S[500003];
scanf("%500000s", S);
// NFA for (.|1+01|101+)*
// q0 -0-> q0 (+0)
// q0 -1-> q0 (+0)
// q0 -1-> q1 (+1)
// q1 -1-> q1 (+1)
// q1 -0-> q2 (+0)
// q2 -1-> q0 (+0)
// q0 -1-> q3 (+0)
// q3 -0-> q4 (+0)
// q4 -1-> q4 (+1)
// q4 -1-> q0 (+1)
int dp[5] = {0, INT_MIN, INT_MIN, INT_MIN, INT_MIN};
for(int i = 0; i < N; ++i) {
int dp2[5] = {dp[0], dp[1], dp[2], dp[3], dp[4]};
if(S[i] == '0') {
// q0 -0-> q0 (+0)
// q1 -0-> q2 (+0)
// q3 -0-> q4 (+0)
dp[0] = dp2[0];
dp[1] = INT_MIN;
dp[2] = dp2[1];
dp[3] = INT_MIN;
dp[4] = dp2[3];
} else {
// q0 -1-> q0 (+0)
// q2 -1-> q0 (+0)
// q4 -1-> q0 (+1)
// q0 -1-> q1 (+1)
// q1 -1-> q1 (+1)
// q0 -1-> q3 (+0)
// q4 -1-> q4 (+1)
dp[0] = max({dp2[0], dp2[2], dp2[4] + 1});
dp[1] = max({dp2[0] + 1, dp2[1] + 1});
dp[2] = INT_MIN;
dp[3] = dp2[0];
dp[4] = dp2[4] + 1;
}
}
printf("%d\n", dp[0]);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - 101 to 010 |
| User | qnighy |
| Language | C++14 (GCC 5.4.1) |
| Score | 700 |
| Code Size | 1207 Byte |
| Status | AC |
| Exec Time | 4 ms |
| Memory | 640 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:7:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int N; scanf("%d", &N);
^
./Main.cpp:9:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%500000s", S);
^
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 700 / 700 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0.txt, example1.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, example0.txt, example1.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 000.txt | AC | 2 ms | 384 KiB |
| 001.txt | AC | 1 ms | 256 KiB |
| 002.txt | AC | 2 ms | 384 KiB |
| 003.txt | AC | 1 ms | 256 KiB |
| 004.txt | AC | 2 ms | 384 KiB |
| 005.txt | AC | 2 ms | 384 KiB |
| 006.txt | AC | 1 ms | 256 KiB |
| 007.txt | AC | 1 ms | 256 KiB |
| 008.txt | AC | 1 ms | 128 KiB |
| 009.txt | AC | 3 ms | 512 KiB |
| 010.txt | AC | 2 ms | 640 KiB |
| 011.txt | AC | 3 ms | 640 KiB |
| 012.txt | AC | 3 ms | 640 KiB |
| 013.txt | AC | 4 ms | 640 KiB |
| 014.txt | AC | 4 ms | 640 KiB |
| 015.txt | AC | 4 ms | 640 KiB |
| 016.txt | AC | 4 ms | 640 KiB |
| 017.txt | AC | 4 ms | 640 KiB |
| 018.txt | AC | 4 ms | 640 KiB |
| 019.txt | AC | 3 ms | 640 KiB |
| 020.txt | AC | 3 ms | 640 KiB |
| 021.txt | AC | 3 ms | 640 KiB |
| 022.txt | AC | 3 ms | 640 KiB |
| 023.txt | AC | 3 ms | 640 KiB |
| 024.txt | AC | 3 ms | 640 KiB |
| 025.txt | AC | 3 ms | 640 KiB |
| 026.txt | AC | 3 ms | 640 KiB |
| 027.txt | AC | 3 ms | 640 KiB |
| 028.txt | AC | 3 ms | 640 KiB |
| 029.txt | AC | 3 ms | 640 KiB |
| 030.txt | AC | 3 ms | 640 KiB |
| 031.txt | AC | 3 ms | 640 KiB |
| 032.txt | AC | 3 ms | 640 KiB |
| 033.txt | AC | 3 ms | 640 KiB |
| 034.txt | AC | 3 ms | 640 KiB |
| 035.txt | AC | 3 ms | 640 KiB |
| 036.txt | AC | 3 ms | 640 KiB |
| example0.txt | AC | 0 ms | 128 KiB |
| example1.txt | AC | 0 ms | 128 KiB |