bingxuan9112

TIOJ 1411

Mar 17th, 2020
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. inline char readchar() {
  4.     constexpr int B = 1<<20;
  5.     static char buf[B], *p=buf, *q=buf;
  6.     if(p == q && (q=(p=buf)+fread(buf,1,B,stdin)) == buf) return EOF;
  7.     return *p++;
  8. }
  9. inline int nextint() {
  10.     bool neg=false;
  11.     int x = 0, c = readchar();
  12.     while(('0'>c||c>'9')&&c!='-'&&~c) c = readchar();
  13.     if(c=='-') neg=true, c=readchar();
  14.     while('0'<=c&&c<='9') x=x*10+c-'0', c=readchar();
  15.     if(neg) x = -x;
  16.     return x;
  17. }
  18. int n,id[1000001];
  19. long long v[1000001];
  20. signed main() {
  21.     while(n = nextint()) {
  22.         for(int i = 1; i <= n; i++) v[i] = nextint();
  23.         for(int i = 1; i <= n; i++) v[i] = (v[i] > 0 ? 1 : v[i] < 0 ? -1 : 0) + v[i-1];
  24.         for(int i = 0; i <= n; i++) id[i] = i;
  25.         std::stable_sort(id,id+n+1,[](int a,int b){return v[a]<v[b];});
  26.         //for(int i = 0; i <= n; i++) printf("%d%c", id[i], " \n"[i==n]);
  27.         //for(int i = 0; i <= n; i++) printf("%d%c", v[id[i]], " \n"[i==n]);
  28.         int ans = 0;
  29.         for(int i = 0, j; i <= n; i = j) {
  30.             for(j = i+1; j <= n; j++) if(v[id[j]]!=v[id[i]]) break;
  31.             //printf("%d %d\n", id[j], id[i]);
  32.             ans = std::max(ans, id[j-1] - id[i]);
  33.         }
  34.         printf("%d\n", ans);
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment