Submission #1051725
Source Code Expand
#include <algorithm>
#include <cassert>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <deque>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
#define FOR(i,k,n) for (int (i)=(k); (i)<(n); ++(i))
#define rep(i,n) FOR(i,0,n)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fst first
#define snd second
#define all(v) begin(v), end(v)
#define debug(x) cerr<< #x <<": "<<x<<endl
#define debug2(x,y) cerr<< #x <<": "<< x <<", "<< #y <<": "<< y <<endl
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vector<int> > vvi;
typedef vector<ll> vll;
typedef vector<vector<ll> > vvll;
template<class T> using vv=vector<vector< T > >;
int main() {
string s;
cin >> s;
int len = s.length();
deque<bool> mb2_even(len+1, false), mb2_odd(len+1, false), mb5_even(len, false), mb5_odd(len, false);
rep (i, len) {
if (s[i] == '2' || s[i] == '?') {
if (i % 2 == 0) {
mb2_even[i] = true;
mb2_even[i+1] = true;
} else {
mb2_odd[i] = true;
mb2_odd[i+1] = true;
}
}
}
FOR (i, 1, len) {
if (s[i] == '5' || s[i] == '?') {
if (i % 2 == 0) {
mb5_even[i] = true;
mb5_even[i-1] = true;
} else {
mb5_odd[i] = true;
mb5_odd[i-1] = true;
}
}
}
deque<bool> mb_even(len, false), mb_odd(len, false);
rep (i, len) {
mb_even[i] = (mb2_even[i] && mb5_odd[i]);
mb_odd[i] = (mb2_odd[i] && mb5_even[i]);
}
int ans = 0;
int index;
index = 0;
while (index < len) {
if (mb_even[index]) {
rep (i, len-index) {
if (!mb_even[i + index]) {
ans = max(ans, i);
index += i;
break;
} else if (i == len-index-1) {
ans = max(ans, i+1);
index = len;
break;
}
}
} else {
index += 1;
}
}
index = 0;
while (index < len) {
if (mb_odd[index]) {
rep (i, len-index) {
if (!mb_odd[i + index]) {
ans = max(ans, i);
index += i;
break;
} else if (i == len-index-1) {
ans = max(ans, i+1);
index = len;
break;
}
}
} else {
index += 1;
}
}
printf("%d\n", ans);
return 0;
}
Submission Info
Submission Time |
|
Task |
B - ニコニコレベル |
User |
tspcx |
Language |
C++14 (Clang 3.8.0) |
Score |
300 |
Code Size |
2622 Byte |
Status |
AC |
Exec Time |
12 ms |
Memory |
960 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
300 / 300 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, large_01.txt, large_02.txt, large_03.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt |
Case Name |
Status |
Exec Time |
Memory |
hand_01.txt |
AC |
3 ms |
256 KB |
hand_02.txt |
AC |
3 ms |
256 KB |
hand_03.txt |
AC |
3 ms |
256 KB |
hand_04.txt |
AC |
3 ms |
256 KB |
hand_05.txt |
AC |
10 ms |
960 KB |
large_01.txt |
AC |
11 ms |
960 KB |
large_02.txt |
AC |
11 ms |
960 KB |
large_03.txt |
AC |
11 ms |
960 KB |
random_01.txt |
AC |
12 ms |
960 KB |
random_02.txt |
AC |
12 ms |
960 KB |
random_03.txt |
AC |
11 ms |
960 KB |
random_04.txt |
AC |
12 ms |
960 KB |
sample_01.txt |
AC |
3 ms |
256 KB |
sample_02.txt |
AC |
3 ms |
256 KB |
sample_03.txt |
AC |
3 ms |
256 KB |
sample_04.txt |
AC |
3 ms |
256 KB |
sample_05.txt |
AC |
3 ms |
256 KB |