Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- inline char readchar() {
- constexpr int B = 1<<20;
- static char buf[B], *p=buf, *q=buf;
- if(p == q && (q=(p=buf)+fread(buf,1,B,stdin)) == buf) return EOF;
- return *p++;
- }
- inline int nextint() {
- bool neg=false;
- int x = 0, c = readchar();
- while(('0'>c||c>'9')&&c!='-'&&~c) c = readchar();
- if(c=='-') neg=true, c=readchar();
- while('0'<=c&&c<='9') x=x*10+c-'0', c=readchar();
- if(neg) x = -x;
- return x;
- }
- int n,id[1000001];
- long long v[1000001];
- signed main() {
- while(n = nextint()) {
- for(int i = 1; i <= n; i++) v[i] = nextint();
- for(int i = 1; i <= n; i++) v[i] = (v[i] > 0 ? 1 : v[i] < 0 ? -1 : 0) + v[i-1];
- for(int i = 0; i <= n; i++) id[i] = i;
- std::stable_sort(id,id+n+1,[](int a,int b){return v[a]<v[b];});
- //for(int i = 0; i <= n; i++) printf("%d%c", id[i], " \n"[i==n]);
- //for(int i = 0; i <= n; i++) printf("%d%c", v[id[i]], " \n"[i==n]);
- int ans = 0;
- for(int i = 0, j; i <= n; i = j) {
- for(j = i+1; j <= n; j++) if(v[id[j]]!=v[id[i]]) break;
- //printf("%d %d\n", id[j], id[i]);
- ans = std::max(ans, id[j-1] - id[i]);
- }
- printf("%d\n", ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment