杭电acm1003

//第一次发,刚开始没看懂。后来借鉴了百度知道后才写出的程序!!!

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a[100005],sum[100005];
    int n,count=0;
    scanf("%d",&n);
    while(n-->0)
    {
        int m,max,i,r=1;
        scanf("%d",&m);
        for(i=1;i<=m;i++)
        {
            scanf("%d",&a[i]);
        }
        sum[1]=a[1];
        max=a[1];
        for(i=2;i<=m;i++)
        {
            if(sum[i-1]>0)
            {
                sum[i]=sum[i-1]+a[i];
                if(sum[i]>max)
                {
                    max=sum[i];       //求得最大值
                    r=i;              //记录最后一个数的位置
                }
            }
            else
            {
                sum[i]=a[i];
                if(sum[i]>max)
                {
                    max=sum[i];       //求得最大值
                    r=i;              //记录最后一个数的位置
                }
            }
        }
        count++;                      //记录次数
        for(i=r-1;i>0;i--)            //求得第一个数的位置
            if(sum[i]<0)
                break;
        printf("Case %d:\n",count);
        printf("%d %d %d\n",max,i+1,r);
        if(n!=0)
            printf("\n");
    }
}

你可能感兴趣的:(ACM)