HDOJ1003

#include <iostream>
#include<stdio.h>
using namespace std;

int main(){
int N;
while(cin>>N)
{
for(int k=1;k<=N;k++)
{
if(k-1)
cout<<endl;
int n;
cin>>n;
int i,j,beg,end,max=-11111111,sum,fig;
for(i=j=1,sum=0;j<=n;j++)
{
cin>>fig;
sum+=fig;
if(sum>max)
{
max=sum;
beg=i;
end=j;
}//a只在此处改变beg,和end 的大小
if(sum<0)
{
i=j+1;
sum=0;
}//如果sum小于零了,那么说明刚加进来的fig特别的小(小到这种“特殊”的程度)
//试探性的以次为起点,如果后来的sum 比max 大,则前面的一连串就毫无意义(因为加上一个负值肯定会变小的)
}
cout<<"Case "<<k<<":\n";
cout<<max<<" "<<beg<<" "<<end<<endl;
}
}
return 0;
}

posted @ 2014-03-17 18:53  FREE小宝  阅读(160)  评论(0编辑  收藏  举报