问题标题: 酷町堂:3849

0
0

0
已采纳
张天璨
张天璨
新手天翼
新手天翼
#include<iostream>
#include<cstdio>
#define INF 0x3f3f3f3f
using namespace std;
int n,a[110];
int g(int l,int r){
    int mid=(l+r)/2;
    int sum1=0,sum2=0,maxl=-INF,maxr=-INF;
    for(int i=mid;i>=l;i--){
        sum1+=a[i];
        maxl=max(maxl,sum1);
    }
    for(int i=mid+1;i<=r;i++){
        sum2+=a[i];
        maxr=max(maxr,sum2);
    }
    return maxl+maxr;
}
int f(int l,int r){
    if(l==r) return a[l];
    int mid=(l+r)/2;
    int maxl=f(l,mid),maxr=f(mid+1,r),maxm=g(l,r);
    return max(max(maxl,maxr),maxm);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cout<<f(1,n);
    return 0;
}

@刘乐宸

我要回答