原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003
#include<stdio.h>
struct Node
{
int max;
int start;
int end;
};
int arr[100001];
Node node[100001];
int main()
{
int count,num,Max;
scanf("%d",&count);
for(int cases=1;cases<=count;cases++)
{
scanf("%d",&num);
scanf("%d",&node[1].max);
node[1].start=1;
node[1].end=1;
Max=node[1].max;
int mark=1;
for(int i=2;i<=num;i++)
{
scanf("%d",&arr[i]);
if(node[i-1].max+arr[i]>=arr[i])
{
node[i].max=node[i-1].max+arr[i];
node[i].start=node[i-1].start;
}
else
{
node[i].max=arr[i];
node[i].start=i;
}
node[i].end=i;
if(node[i].max>Max)
{
Max=node[i].max;
mark=i;
}
}
printf("Case %d:\n",cases);
printf("%d %d %d\n",node[mark].max,node[mark].start,node[mark].end);
if(cases!=count)
printf("\n");
}
}