20分求助
查看原帖
20分求助
173056
_Veritas楼主2021/10/14 22:55

WA傻了。

记录

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[200005],lmax[200005],rmax[200005],lmin[200005],rmin[200005],ans,sum;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    lmax[0]=rmax[n+1]=ans=-2147483647;rmin[n+1]=lmin[0]=2147483647;
    for(int i=1;i<=n;++i){
        lmax[i]=max(a[i],lmax[i-1]);
        lmin[i]=min(a[i],lmin[i-1]);
        sum+=a[i];
    }
    for(int i=n;i>=0;--i){
        rmax[i]=max(a[i],rmax[i+1]);
        rmin[i]=min(a[i],rmin[i+1]);
    }
    for(int i=2;i<=n;++i) lmax[i]=max(lmax[i],lmax[i-1]);
    for(int i=2;i<=n;++i) lmin[i]=min(lmin[i],lmin[i-1]);
    for(int i=n-1;i;--i) lmax[i]=max(lmax[i],lmax[i+1]);
    for(int i=n-1;i;--i) lmin[i]=min(lmin[i],lmin[i+1]);
    for(int i=2;i<n;++i) ans=max(ans,max(lmax[i-1]+rmax[i+1],sum-lmin[i-1]-rmin[i+1]));
    cout<<ans;
    return 0;
}
2021/10/14 22:55
加载中...