Submission #341518

#TimeUsernameProblemLanguageResultExecution timeMemory
341518ogibogi2004Bigger segments (IZhO19_segments)C++14
100 / 100
314 ms41792 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const ll INF=2e17; const int MAXN=5e5+6; ll a[MAXN],n; ll pref[MAXN]; ll dp[MAXN],s[MAXN]; vector<pair<ll,ll> >v[MAXN]; int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++) { pref[i]=pref[i-1]+a[i]; } dp[0]=0;s[0]=0; priority_queue<pair<ll,ll> >pq; pq.push({0,0}); priority_queue<pair<pair<ll,ll>,ll> >to_add; for(int i=1;i<=n;i++) { while(!to_add.empty()&&-to_add.top().first.first<=pref[i]) { pq.push({to_add.top().first.second,to_add.top().second}); to_add.pop(); } auto t=pq.top(); dp[i]=t.first+1; to_add.push({{-2*pref[i]+pref[t.second],dp[i]},i}); } cout<<dp[n]<<endl; return 0; }
#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...