1481:Maximum sum
传送门
#include<bits/stdc++.h>
using namespace std;
const int MAX=50005;
int a[MAX];
int l[MAX];
int r[MAX];
int lm[MAX];
int rm[MAX];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
l[1]=a[1]; lm[1]=l[1];
for(int i=2;i<=n;i++){
l[i]=max(l[i-1]+a[i],a[i]);
lm[i]=max(lm[i-1],l[i]);
}
r[n]=a[n]; rm[n]=r[n];
for(int i=n-1;i>=1;i--){
r[i]=max(a[i],r[i+1]+a[i]);
rm[i]=max(rm[i+1],r[i]);
}
int res=lm[1]+rm[2];
for(int i=2;i<=n-1;i++){
res=max(res,lm[i]+rm[i+1]);
}
cout<<res<<endl;
}
return 0;
}