reza va reshte

 avatar
unknown
plain_text
2 years ago
1.6 kB
4
Indexable
#include <bits/stdc++.h>
using namespace std;

typedef long long       ll;
typedef pair<int, int>  pii;

#define FastIO          cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
#define FileIO          freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#define fi              first
#define se              second
#define max_heap(T)     priority_queue<T>
#define min_heap(T)     priority_queue<T, vector<T>, greater<T>>
#define fr(i, a, b)     for(int i=a;i<b;i++)
#define frr(i, a, b)    for(int i=a;i>b;i--)
#define frin(i, A)      for(auto &i : A)
#define sz(x)           (int)x.size()
#define all(A)          A.begin(), A.end()
#define mins(a, b)      a = min(a, b)
#define maxs(a, b)      a = max(a, b)
#define pb              push_back
#define popcnt          __builtin_popcount
#define setprec(x)      cout << fixed << setprecision(x)
#define md(a)           (a%MOD + MOD)%MOD

const ll  INF  = 2e9;
const ll  MOD  = 1e9 + 7;
const int MAXN = 1e5 + 5;

int n, ps[MAXN];
string s;

bool chk(int x) {
    if(n-x >= x+1)
        return 1;
    return ps[x] - ps[n-x] == 0 || ps[x] - ps[n-x] == 2*x - n;
}

void solve() {
    cin >> s;
    n = sz(s);
    s = "#" + s;
    fr(i, 1, n+1)
        ps[i] = ps[i-1] + (s[i] == '1');
    int l = 0, r = n+1, mid;
    while(r-l > 1) {
        mid = (l+r)>>1;
        if(chk(mid))
            l = mid;
        else
            r = mid;
    }
    cout << l << '\n';
}

int32_t main() {
    FastIO
    int T;
    // cin >> T;
    T = 1;
    while(T--)
        solve();
    return 0;
}
Editor is loading...