#include <bits/stdc++.h>
using namespace std;
#define yes cout<<"YES"<<'\n'
#define no cout<<"NO"<<'\n'
#define si size()
#define fi first
#define se second
#define ll long long
#define sr sort
#define pb push_back
#define all(x) x.begin(),x.end()
constexpr ll MAXN=3e5+5,INF=1e18,MOD=1e9+7;
ll n,m,i,j,k,p,t,a[MAXN],pref[MAXN];
ll tinhleft(ll i,ll lenA){
ll sum=a[i];
sum+=pref[min(n,i+lenA)]-pref[i];
lenA-=min(n,i+lenA)-i;
sum+=pref[lenA];
return sum;
}
ll tinhright(ll i,ll lenA){
ll sum=a[i];
sum+=pref[i-1]-pref[max(1ll,i-lenA)-1];
lenA-=i-max(1ll,i-lenA);
sum+=pref[n]-pref[n-lenA];
return sum;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
#define name "test"
if(fopen(name".inp","r")){
freopen(name".inp","r",stdin);
freopen(name".out","w",stdout);
}
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
pref[i]=a[i]+pref[i-1];
}
ll lenA=(n+1)/2,lenB=n-lenA,ans=0;
lenA--;
lenB--;
for(i=1;i<=n;i++){
ll sumA=tinhleft(i,lenA),
sumB=tinhright(i,lenA),
sumC=tinhright((i-1==0?n:i-1),lenB),
sumD=tinhleft((i+1>n?1:i+1),lenB);
if(sumC>sumD)
ans=max(ans,sumA);
else ans=max(ans,sumB);
}
cout<<ans;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
hac.cpp: In function 'int main()':
hac.cpp:33:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
33 | freopen(name".inp","r",stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
hac.cpp:34:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
34 | freopen(name".out","w",stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |