Submission #1232622

#TimeUsernameProblemLanguageResultExecution timeMemory
1232622rcllHacker (BOI15_hac)C++20
100 / 100
298 ms18028 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> a(2*n+1);
	a[0]=0;
	multiset<int> vals;
	int SZ=(n+1)/2;
	for (int i=1; i<=n; i++) {
		cin >> a[i];
		a[n+i]=a[i];
	}
	for (int i=1; i<=2*n; i++) {
        a[i]+=a[i-1];
    }
	int ans=0;
	vector<int> ret(n+1, INT_MAX);
	for (int i=1; i<=2*n; i++) {
		if (i+SZ-1<=2*n) { 
            vals.insert(a[i+SZ-1]-a[i-1]); 
        }
		if (i > SZ) { 
            vals.erase(vals.find(a[i-1]-a[i-1-SZ]));
        }
		int prev=((i-1) % n)+1;
		ret[prev]=min(ret[prev], *vals.begin());
	}
	for (int i=1; i<=n; i++) {
        ans=max(ans, ret[i]);
    }
	cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...