1 solutions

  • 0
    @ 2025-11-27 11:59:01

    C++ :

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int f1[200005],f2[2000005],a[200005];
    signed main(){
        int n;
        cin>>n;
        for (int i=1;i<=n;i++)cin>>a[i];
        int sum=0,maxn=-1e9;
        for (int i=1;i<=n;i++) {
            sum+=a[i];
            maxn=max(maxn,sum);
            f1[i]=maxn;
        }
        sum=0,maxn=-1e9;
        for (int i=n;i>=1;i--) {
            sum+=a[i];
            maxn=max(maxn,sum);
            f2[i]=maxn;
        }
        int cnt=-1e9; // 第一种情况的最大值
        sum=0;
        for (int i=1;i<=n;i++){
            if (sum<0)sum=a[i];
            else sum+=a[i];
            cnt=max(cnt,sum);
        }
        int cnt2=-1e9; // 第二种情况的最大值
        for (int i=1;i<=n;++i)
            cnt2=max(max(cnt2,f1[i]+f2[i+1]),f1[i-1]+f2[i]);
        cout<<max(cnt,cnt2);
        return 0;
    }
    
    
    • 1

    Information

    ID
    108
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By