Submission #723686

#TimeUsernameProblemLanguageResultExecution timeMemory
723686MurotYHacker (BOI15_hac)C++14
0 / 100
0 ms212 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...