15分求助

P2629 好消息,坏消息

已AC,我太菜了 ```cpp #include <bits/stdc++.h> using namespace std; const int N = 2e6 + 10; int n, a[N], s[N], ans; int q[N], h, t; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 1; i <= n; i ++) { cin >> a[i]; a[i+n] = a[i]; } for (int i = 1; i <= (n << 1); i ++) s[i] = s[i-1] + a[i]; h = 1; t = 0; for (int i = 1; i <= n; i ++) { while (t >= h && s[q[t]] >= s[i]) t --; q[++t] = i; } if (s[q[h]] >= 0) ans ++; for (int i = 2; i <= n; i ++) { int j = i + n - 1; while (t >= h && s[q[t]] >= s[j]) t --; q[++t] = j; while (t >= h && q[h] < i) h ++; if (s[q[h]] - s[i-1] >= 0) ans ++; } cout << ans; return 0; } ```
by Zwjoey @ 2023-07-11 10:45:43


|