HDU1003--Max Sum

作者在 2008-04-26 18:36:07 发布以下内容

http://acm.hdu.edu.cn/showproblem.php?pid=1003

#include<stdio.h>
#include<string.h>
int
a[100001];
void
biggest(int w)
{

    int
i,m,r,s1,e1,s,e;
    r=-1000;
    m=0;
    s=1;e=1;
    s1=1;e1=1;
    for
(i=1;i<=w;i++)
    {

        if
(m>=0){m+=a[i];e=i;}
        else if
(m<0){m=a[i];s=i;e=i;}
        if
(m>r){s1=s;e1=e;r=m;}
    }

    printf("%d %d %d\n",r,s1,e1);
}

void
main()
{

    int
n,m,w,i;
    scanf("%d",&n);
    m=n;
    while
(n--)
    {

        memset(a,0,sizeof(a));
        scanf("%d",&w);
        for
(i=1;i<=w;i++)
            scanf("%d",&a[i]);
        printf("Case %d:\n",m-n);
        biggest(w);
        if
(n>=1)
            printf("\n");
    }
}

ACM | 阅读 1397 次
文章评论,共0条
游客请输入验证码
最新评论