Submission #1258614

#TimeUsernameProblemLanguageResultExecution timeMemory
1258614namhhBigger segments (IZhO19_segments)C++20
100 / 100
54 ms15944 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fi first #define se second const int N = 5e5+5; int n,a[N],pre[N]; pii dp[N]; signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; pre[i] = pre[i-1]+a[i]; } dp[1] = {1,0}; for(int i = 1; i <= n; i++){ dp[i] = max(dp[i],dp[i-1]); int l = i; int r = n; int res = -1; while(l <= r){ int mid = (l+r)/2; if(pre[mid]-pre[i] >= pre[i]-pre[dp[i].se]){ res = mid; r = mid-1; } else l = mid+1; } if(res != -1) dp[res] = max(dp[res],{dp[i].fi+1,i}); } cout << dp[n].fi; }
#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...