poj 2479

来源:互联网 发布:贝克汉姆维多利亚知乎 编辑:程序博客网 时间:2024/06/06 20:06
#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;}

0 0
原创粉丝点击