Submission #2661273

Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;

#define NDEBUG
#ifdef DEBUG
#include "../cout11.h"
#undef NDEBUG
#endif
#include <cassert>

typedef long long ll;
typedef long double Double;
typedef unsigned long long ull;
typedef pair<int,int> ii;
typedef pair<ll,ll> llll;
typedef pair<double,double> dd;

typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<ii> vii;
typedef vector<vector<ii>> vvii;
typedef vector<ll> vll;
typedef vector<string> vs;
typedef vector<double> vd;
typedef vector<long double> vD;

#define sz(a)  int((a).size())
#define pb  push_back
#define FOR(var,from,to) for(int var=(from);var<=(to);++var)
#define rep(var,n)  for(int var=0;var<(n);++var)
#define rep1(var,n)  for(int var=1;var<=(n);++var)
#define repC2(vari,varj,n)  for(int vari=0;vari<(n)-1;++vari)for(int varj=vari+1;varj<(n);++varj)
#define ALL(c)  (c).begin(),(c).end()
#define RALL(c)  (c).rbegin(),(c).rend()
#define tr(i,c)  for(auto i=(c).begin(); i!=(c).end(); ++i)
#define found(s,e)  ((s).find(e)!=(s).end())
#define mset(arr,val)  memset(arr,val,sizeof(arr))
#define mid(x,y) ((x)+((y)-(x))/2)
#define IN(x,a,b) ((a)<=(x)&&(x)<=(b))

int sub(string& s) {
    int L=s.size();
    int mx = L;
    for (int i=0; i<L/2; ++i){
        if (s[i]=='1' || s[L-1-i]=='1') mx=L-1-i;
        // printf("i=%d, mx=%d\n", i, mx);
    }
    if (L%2) {
        if (s[L/2]=='1') mx=L/2;
        // printf("i=%d, mx=%d\n", L/2, mx);
    }
    return mx;
}
int solve(string& s) {
    int best = sub(s);
    for (char &c:s) c = ('0'+'1'-c);
    // cerr << s << endl;
    best = max(best,sub(s));
    return best;
}

int main() {
    string s; cin >> s;
    cout << solve(s) << endl;
    // cout << (solve(N,a) ? "Yes":"No") << endl;
    return 0;
}

Submission Info

Submission Time
Task D - Wide Flip
User naoya_t
Language C++14 (GCC 5.4.1)
Score 500
Code Size 1814 Byte
Status
Exec Time 5 ms
Memory 512 KB

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 s1.txt, s2.txt, s3.txt
All 500 / 500 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, s1.txt, s2.txt, s3.txt
Case Name Status Exec Time Memory
01.txt 5 ms 512 KB
02.txt 5 ms 512 KB
03.txt 5 ms 512 KB
04.txt 5 ms 512 KB
05.txt 5 ms 512 KB
06.txt 5 ms 512 KB
07.txt 5 ms 512 KB
08.txt 5 ms 512 KB
09.txt 5 ms 512 KB
10.txt 5 ms 512 KB
11.txt 5 ms 512 KB
12.txt 5 ms 512 KB
13.txt 5 ms 512 KB
14.txt 5 ms 512 KB
15.txt 5 ms 512 KB
16.txt 5 ms 512 KB
17.txt 4 ms 512 KB
18.txt 4 ms 512 KB
19.txt 4 ms 512 KB
20.txt 4 ms 512 KB
21.txt 1 ms 256 KB
22.txt 1 ms 256 KB
23.txt 1 ms 256 KB
24.txt 1 ms 256 KB
25.txt 1 ms 256 KB
26.txt 1 ms 256 KB
27.txt 1 ms 256 KB
s1.txt 1 ms 256 KB
s2.txt 1 ms 256 KB
s3.txt 1 ms 256 KB