(DP动态规划)
#include<stdio.h>
#include<algorithm>
#include<string>
#include<string.h>
#define INF 0x3f3f3f3f
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
int dp[100050];
int a[100050];
int main()
{
int T,N,left=1,right=1;
int max=-INF;
scanf("%d",&T);
for(int j=1;j<=T;j++)
{
memset(dp,0,sizeof(dp));
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&a[i]);
left=1;
for(int i=1;i<=N;i++)
{
if(dp[i-1]>0)
dp[i]=dp[i-1]+a[i];
else
dp[i]=a[i];
if(dp[i]>=max)
max=dp[i],right=i;
}
for(int i=right;i>=1;i--)
{
dp[right]=dp[right]-a[i];
if(dp[right]==0)
{
left=i;
}
}
printf("Case %d:\n%d %d %d\n",j,max,left,right);
if(j<T)
printf("\n");
left=1,right=1,max=-INF;
}
return 0;
}