hdu1003
# include<iostream>
# include<string.h>
using namespace std;
const int maxn=100005;
int a[maxn];
int dp[maxn], s[maxn];
int main(void)
{
int t, n, i, j;
cin>>t;
for(j=1; j<=t; j++)
{
cin>>n;
for(i=1; i<=n; i++)
cin>>a[i];
memset(dp, 0, sizeof(dp));
dp[1]=a[1];
s[1]=1;
for(i=2; i<=n; i++)
{
if(dp[i-1]<0)
{
dp[i]=a[i];
s[i]=i;
}
else
{
dp[i]=dp[i-1]+a[i];
s[i]=s[i-1];
}
}
int maxi=1;
for(i=2; i<=n; i++)
{
if(dp[i]>dp[maxi])
{
maxi=i;
}
}
cout<<"Case "<<j<<":"<<endl<<dp[maxi]<<" "<<s[maxi]<<" "<<maxi<<endl;
if(j!=t)
cout<<endl;
}
return 0;
}
hdu1231
# include<stdio.h>
# include<string.h>
const int maxn=100005;
int a[maxn];
int dp[maxn], s[maxn];
int main(void)
{
int n, i, j;
while(scanf("%d", &n)!=EOF, n)
{
for(i=1; i<=n; i++)
scanf("%d", &a[i]);
memset(dp, 0, sizeof(dp));
dp[1]=a[1];
s[1]=1;
for(i=2; i<=n; i++)
{
if(dp[i-1]<0)
{
dp[i]=a[i];
s[i]=i;
}
else
{
dp[i]=dp[i-1]+a[i];
s[i]=s[i-1];
}
}
int maxi=1;
for(i=2; i<=n; i++)
{
if(dp[i]>dp[maxi])
{
maxi=i;
}
}
if(dp[maxi]<0)
printf("%d %d %d\n", 0, a[1], a[n]);
else
printf("%d %d %d\n", dp[maxi],a[s[maxi]],a[maxi]);
}
return 0;
}