#include<iostream>
using namespace std;
int a[50005];
int s[50005];
int t[50005];
int T,n;
int main()
{
scanf("%d",&T);
int i,j;
for(i=0;i<T;++i)
{
char ch[3];
gets(ch);
scanf("%d",&n);
for(j=1;j<=n;++j)
scanf("%d",&a[j]);
t[0]=0;
for(j=1;j<=n;++j)
{
if(t[j-1]<0)
t[j]=a[j];
else
t[j]=t[j-1]+a[j];
}
int iMax=t[1];
for(j=1;j<=n;++j)
{
if(iMax > t[j])
t[j]=iMax;
else
iMax = t[j];
}
s[n]=a[n];
for(j=n-1;j>0;--j)
{
if(s[j+1] > 0)
s[j]=a[j]+s[j+1];
else
s[j]=a[j];
}
iMax=s[n];
for(j=n-1;j>0;--j)
{
if(iMax > s[j])
s[j]=iMax;
else
iMax=s[j];
}
iMax=-999999999;
int temp;
for(j=2;j<=n;++j)
{
temp=t[j-1]+s[j];
if(temp > iMax)
iMax=temp;
}
printf("%d\n",iMax);
}
return 0;
}
|