Submission #1285640

#TimeUsernameProblemLanguageResultExecution timeMemory
1285640Jawad_Akbar_JJBigger segments (IZhO19_segments)C++20
13 / 100
1 ms580 KiB
#include <iostream> #include <algorithm> using namespace std; const int N = 1<<19; int a[N], Sm[N], Mx[N], pre[N]; int main(){ int n, Ans = 0; cin>>n; for (int i=1;i<=n;i++) cin>>a[i], pre[i] = pre[i-1] + a[i]; Mx[0] = 1; for (int i=1;i<=n;i++){ if (Mx[i-1] > Mx[i]) Mx[i] = Mx[i-1], Sm[i] = Sm[i-1] + a[i]; int u = upper_bound(pre, pre + n + 1, pre[i] + Sm[i] - 1) - pre; if (Mx[u] < Mx[i] + 1) Mx[u] = Mx[i] + 1, Sm[u] = pre[u] - pre[i]; else if (Mx[u] == Mx[i] + 1) Sm[u] = min(Sm[u], pre[u] - pre[i]); } cout<<Mx[n]<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...