最大子序列和
cin超时
# include<iostream>
# include<stdio.h>
using namespace std;
# define N 50005
# define INT_MIN -1000000
int a[N],dp[N],ls[N],rs[N];
int main()
{
int t,n,i,j,k;
cin>>t;
for(i=1;i<=t;i++)
{
//cin>>n;
scanf("%d",&n);
for(j=1;j<=n;j++)
{
//cin>>a[j];
scanf("%d",&a[j]);
}
dp[1]=a[1];
for(j=2;j<=n;j++)
{
dp[j]= dp[j-1]>0? dp[j-1]+a[j]:a[j] ;
}
ls[1]=a[1];
for(j=2;j<=n;j++)
{
ls[j]= ls[j-1]>dp[j] ? ls[j-1]:dp[j] ;
}
dp[n]=a[n];
for(j=n-1;j>=1;j--)
{
dp[j]= dp[j+1]>0? dp[j+1]+a[j]:a[j] ;
}
rs[n]=a[n];
for(j=n-1;j>=1;j--)
{
rs[j]= rs[j+1]>dp[j] ? rs[j+1]:dp[j] ;
}
k=INT_MIN;
for(j=1;j<n;j++)
{
k= ls[j]+rs[j+1]>k ? ls[j]+rs[j+1]:k ;
}
cout<<k<<endl;
}
return 0;
}