Submission #723686

# Submission time Handle Problem Language Result Execution time Memory
723686 2023-04-14T07:31:53 Z MurotY Hacker (BOI15_hac) C++14
0 / 100
0 ms 212 KB
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("avx,avx2")
#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define ull unsigned long long
#define ff first
#define ss second
#define all(a) a.begin(), a.end()
#define sz size()
using namespace std;
const double pi = 2 * acos(0.0);
const ll N=1e6+7, M=998244353;

ll a[N], pr[N];
void solve()
{
	int n;
	cin >> n;
	for (int i=0;i<n;i++) {
	     cin >> a[i];
		pr[i]=pr[max(0, i-1)]+a[i];
	}
	if (n > 5000){
	     ll ans=0;
	     for (int i=0;i<1;i++){
		     int res=(n+1)/2;
		     ll mn=1e18;
		     for (int j=0;j<res;j++){
			
			     int l=(i-1+n) % n, r=i;
			     ll sum=0;
			     int lf;
			     if ((l-j+1) >= 0 && j > 0){
				     lf=l-j+1;
				     if (lf == 0) sum+=pr[l];
				     else sum+=pr[l]-pr[lf-1];
			     }
			     else if (j > 0){
				     sum+=pr[l];
				     lf=(l-j+1+n) % n;
				     if (lf == 0) sum+=pr[n-1];
				     else sum+=pr[n-1]-pr[lf-1];
			     }
			     int j1=res-j; l=i;
			     if ((l+j1-1) < n && j1 > 0){
				     lf=l+j1-1;
				     if (r == 0) sum+=pr[lf];
				     else sum+=pr[lf]-pr[r-1];
			     }
			     else if (j1 > 0){
				     if (r == 0) sum+=pr[n-1];
				     else sum+=pr[n-1]-pr[r-1];
				     lf=(i+j1-1) % n;
				     sum+=pr[lf];
			     }	
			     mn=min(mn, sum);
		     }
		     ans=max(ans, mn);
	     }
	     cout << ans;
	     return ;	
	}
	ll ans=0;
	for (int i=0;i<100;i++){
		int res=(n+1)/2;
		ll mn=1e18;
		for (int j=0;j<res;j++){
			
			int l=(i-1+n) % n, r=i;
			ll sum=0;
			int lf;
			if ((l-j+1) >= 0 && j > 0){
				lf=l-j+1;
				if (lf == 0) sum+=pr[l];
				else sum+=pr[l]-pr[lf-1];
			}
			else if (j > 0){
				sum+=pr[l];
				lf=(l-j+1+n) % n;
				if (lf == 0) sum+=pr[n-1];
				else sum+=pr[n-1]-pr[lf-1];
			}
			int j1=res-j; l=i;
		//	if (i == 0) cout << j <<" " << j1 << "\n";
			if ((l+j1-1) < n && j1 > 0){
				lf=l+j1-1;
				if (r == 0) sum+=pr[lf];
				else sum+=pr[lf]-pr[r-1];
			}
			else if (j1 > 0){
				if (r == 0) sum+=pr[n-1];
				else sum+=pr[n-1]-pr[r-1];
				lf=(i+j1-1) % n;
				sum+=pr[lf];
			}	
		//	cout << sum << "\n"; 
			mn=min(mn, sum);
		}
		ans=max(ans, mn);
	}
	cout << ans;
	return ;
}
int main(){
	ios;
	int t=1;	
//	cin >> t;
	while (t--){ 
	    solve();
	    cout << "\n";
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -