求最大子段和 及开始结束位置
#include<bits/stdc++.h>
using namespace std;
int main(){
int T,N;
scanf("%d",&T);
int number[100000];
for (int j = 1;j<=T;j++){
scanf("%d",&N);
for (int i =0;i<N;i++)
scanf("%d",&number[i]);
int ans = number[0];
int local = 0;
int begin,max_begin;
int end,max_end;
begin = max_begin = end = max_end = 0;
for (int i = 0;i<N;i++){
local += number[i];
if (ans < local){
max_end = i;
max_begin = begin;
ans= local;
}
if (local < 0){
local = 0;
begin = i+1;
}
}
printf("Case %d:\n",j);
printf("%d %d %d\n",ans,max_begin+1,max_end+1);
if(j < T)
printf("\n");
}
return 0;
}