Submission #1192284

#TimeUsernameProblemLanguageResultExecution timeMemory
1192284_rain_Hacker (BOI15_hac)C++20
100 / 100
56 ms16964 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

const int N=(int)5e5;
LL sum[N*2+2]={},a[N*2+2]={};
int n;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0) ; cout.tie(0);
//	freopen("main.inp","r",stdin);
	
	cin>>n;
	int slide=(n+1)/2;
	for(int i=1;i<=n;++i) cin>>a[i];
	for(int i=n+1;i<=n*2;++i) a[i]=a[i-n];
	for(int i=1;i<=n*2;++i) sum[i]=sum[i-1]+a[i];
	for(int i=1;i<=n;++i) a[i]=sum[i+slide-1]-sum[i-1];
	for(int i=n+1;i<=n*2;++i) a[i]=a[i-n];
	deque<int>q;
	for(int i=1;i<=n;++i){
		while (q.size() && a[q.back()]>=a[i]) q.pop_back();
		q.push_back(i);
	}
	LL ans=0;
	for(int i=n+1;i<=n*2;++i){
		while (q.size() && q.front() < i-slide+1) q.pop_front();
		while (q.size() && a[q.back()] >= a[i]) q.pop_back();
		q.push_back(i);
		ans=max(ans,a[q.front()]);
	}

	cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...