Submission #632278

#TimeUsernameProblemLanguageResultExecution timeMemory
632278EthanKim8683Hacker (BOI15_hac)C++17
100 / 100
53 ms8652 KiB
#include<iostream> #include<cstdio> #include<deque> using namespace std; using I=int; const I N=500000; I v_arr[N]; I rngs[N]; deque<pair<I,I>>que; I cnt1=0,cnt2=0; void add(I val){ while(que.size()&&que.back().first>val)que.pop_back(); que.push_back({val,cnt1++}); } void rem(){ if(que.size()&&que.front().second==cnt2)que.pop_front(); cnt2++; } I qry(){ return que.front().first; } I main(){ cin.tie(0)->sync_with_stdio(0); I n;cin>>n; for(I i=0;i<n;i++)cin>>v_arr[i]; I tot=0; for(I i=0;i<n;i++)tot+=v_arr[i]; I low=n/2,upp=n-low; I sum=0; for(I i=0;i<upp;i++)sum+=v_arr[i]; for(I i=0;i<n;i++){ rngs[i]=sum; sum+=v_arr[(i+upp)%n]-v_arr[i]; } for(I i=0;i<upp;i++)add(rngs[i]); I res=0; for(I i=0;i<n;i++){ res=max(res,qry()); add(rngs[(i+upp)%n]),rem(); } printf("%i\n",res); 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...