HDU 1003

#include <iostream>
#include<stdio.h>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 100010
using namespace std;

int main()
{
    int T;
    int n;
    int a[N];
    while(~scanf("%d",&T))
    {
        for(int ca=1;ca<=T;ca++)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);

            int st,en,flag;
            int ans,sum;
            st=en=flag=1;
            ans=sum=a[1];

            for(int i=2;i<=n;i++)
            {
                if(a[i]>a[i]+sum)
                {
                    sum=a[i];
                    flag=i;
                }
                else
                sum+=a[i];
                if(sum>ans)//中途出现使sum减小的数,这个数过后又有比前面最大和大的和出现,ans的值则改变
                {
                   ans=sum;
                   st=flag;
                   en=i;
                }
            }
            printf("Case %d:\n",ca);
            printf("%d %d %d\n",ans,st,en);
            if(ca!=T)
            printf("\n");
        }
    }
    return 0;
}

你可能感兴趣的:(HDU 1003)