#include <cstdio>
const int M=50010;
int p[M], a[M], b[M];
int max(int a, int b)
{
return a>b?a:b;
}
int main()
{
// freopen("in","r",stdin);
// freopen("out","w",stdout);
int i,t,n;
scanf("%d",&t);
while( t-- )
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&p[i]);
a[0]=p[0];
for(i=1;i<n;i++)
{
if( a[i-1]<0 ) a[i]=p[i];
else a[i]=a[i-1]+p[i];
}
for(i=1;i<n;i++) a[i]=max(a[i-1],a[i]);
b[n-1]=p[n-1];
for(i=n-2;i>=0;i--)
{
if( b[i+1]<0 ) b[i]=p[i];
else b[i]=b[i+1]+p[i];
}
for(i=n-2;i>=0;i--) b[i]=max(b[i+1],b[i]);
int ans=-1000000000;
for(i=0;i<n-1;i++) ans=max(ans,a[i]+b[i+1]);
printf("%d\n",ans);
}
return 0;
}
poj 2479
最新推荐文章于 2022-05-26 21:32:05 发布