Submission #535462

#TimeUsernameProblemLanguageResultExecution timeMemory
535462new_accHacker (BOI15_hac)C++14
100 / 100
143 ms15564 KiB
#include<bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<ll> vl; const int N=5e5+10; int sp[N],k[N],naj[N]; int t[N],p[N*2]; void solve(){ int n; cin>>n; for(int i=1;i<=n;i++) cin>>t[i]; for(int i=1;i<=n;i++) sp[i]=sp[i-1]+t[i]; for(int i=1;i<=n;i++){ int dl=(n+1)/2; if(i>=dl) k[i]=sp[i]-sp[i-dl]; else k[i]=sp[i]+sp[n]-sp[n-dl+i]; } deque<pair<int,int> >deq; for(int i=n*2;i>=1;i--) p[i]=(i>n?k[i-n]:k[i]); for(int i=n*2;i>=1;i--){ while(deq.size() and deq.back().fi>=p[i]) deq.pop_back(); if(deq.size() and deq.front().se==i+(n+1)/2) deq.pop_front(); deq.push_back({p[i],i}); if(i<=n) naj[i]=deq.front().fi; } int res=0; for(int i=1;i<=n;i++) res=max(res,naj[i]); cout<<res<<"\n"; } int main(){ solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...