Submission #630364

#TimeUsernameProblemLanguageResultExecution timeMemory
630364kakayoshiHacker (BOI15_hac)C++14
100 / 100
79 ms27212 KiB
#include <bits/stdc++.h> using namespace std; #define forw(i,a,b) for(int i=a;i<=b;i++) #define forb(i,a,b) for(int i=a;i>=b;i--) #define fi first #define se second #define pb push_back #define all(a) a.begin(),a.end() #define getbit(mask,i) ((mask>>i)&1) #define getnum(i) (1<<(i)) #define maxi(a,b) (a)=max((a),(b)) typedef long long int ll; const ll maxN=1e6+5; const ll mod=1e9+7; const ll oo=1e18; ll n,len,sum,a[maxN],pre[maxN],ans[maxN],out; void solve() { cin>>n; len=n/2; forw(i,1,n) { cin>>a[i]; a[i+n]=a[i]; sum+=a[i]; } forw(i,1,2*n) pre[i]=pre[i-1]+a[i]; forw(i,1,2*n) ans[i]=pre[i+len-1]-pre[i-1]; deque<int> p; for(int i=2;i+len-1<n+1;i++) { while (p.size() && ans[p.back()]<ans[i]) p.pop_back(); p.push_back(i); } forw(i,1,n) { out=max(out,sum-ans[p.front()]); if (i+1==p.front()) p.pop_front(); while (p.size() && ans[p.back()]<ans[n+i-len+1]) p.pop_back(); p.push_back(n+i-len+1); } cout<<out; } int main() { ios::sync_with_stdio(0); cin.tie(0); //freopen("bruh.inp","r",stdin); //freopen("bruh.out","w",stdout); solve(); 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...