hdu 1003
#include <stdio.h>
#include <algorithm>
using namespace std;
int num[100005];
int main()
{
int t,kase = 0;
scanf("%d",&t);
while (t--)
{
++kase;
if (kase != 1) printf("\n");
int n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
scanf("%d",&num[i]);
int st = 0,ed = 0,temp = 0;
int sum = num[0];
int ans = num[0];
for (int i = 1; i < n; i++)
{
/*
如果当前序列和为负数,那么完全
可以把当前序列丢掉,选择下一个
元素为序列首元素
*/
if (sum < 0)//丢掉当前序列,同时也处理了-3,-2,-1
{ //这种负数升序的情况
sum = num[i];
temp = i;//保存当前序列的首元素
}
else sum += num[i];
if (sum > ans)
{
ans = sum;
st = temp;
ed = i;
}
}
printf("Case %d:\n",kase);
printf("%d %d %d\n",ans,st+1,ed+1);
}
return 0;
}