hit1760
#include
<
stdio.h
>
#include < string .h >
int main()
{
int n;
while(scanf("%d", &n)==1 && n)
{
int hold=0, mxa=0;
int i, Num;
for(i=0; i<n; i++)
{
scanf("%d", &Num);
mxa=mxa>hold+Num ? mxa : hold+Num;
hold=hold+Num>0 ? hold+Num : 0;
}
if(mxa>0)printf("The maximum winning streak is %d.\n",mxa);
else printf("Losing streak.\n");
}
return 0;
}
#include < string .h >
int main()
{
int n;
while(scanf("%d", &n)==1 && n)
{
int hold=0, mxa=0;
int i, Num;
for(i=0; i<n; i++)
{
scanf("%d", &Num);
mxa=mxa>hold+Num ? mxa : hold+Num;
hold=hold+Num>0 ? hold+Num : 0;
}
if(mxa>0)printf("The maximum winning streak is %d.\n",mxa);
else printf("Losing streak.\n");
}
return 0;
}
PKU2479
#include
<
stdio.h
>
#include < string .h >
int t, n;
int num[ 50010 ], mxa1[ 50010 ], mxa2[ 50010 ], hold, mxa;
int main()
{
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
int i;
mxa=0;
hold=0;
for(i=0; i<n; i++)
{
scanf("%d", &num[i]);
if(i==0 || mxa1[i-1]<=hold+num[i]) mxa1[i]=hold+num[i];
else if(i>0) mxa1[i]=mxa1[i-1];
if(hold+num[i]<=0) hold=0;
else hold+=num[i];
}
hold=0;
for(i=n-1; i>=0; i--)
{
if(i==n-1 || mxa2[i+1]<=hold+num[i]) mxa2[i]=hold+num[i];
else if(i<n-1) mxa2[i]=mxa2[i+1];
if(hold+num[i]<=0) hold=0;
else hold+=num[i];
if(i>0 && i<n-1 && mxa<mxa1[i]+mxa2[i+1] || i==n-2)
mxa=mxa1[i]+mxa2[i+1];
}
printf("%d\n", mxa);
}
return 0;
}
#include < string .h >
int t, n;
int num[ 50010 ], mxa1[ 50010 ], mxa2[ 50010 ], hold, mxa;
int main()
{
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
int i;
mxa=0;
hold=0;
for(i=0; i<n; i++)
{
scanf("%d", &num[i]);
if(i==0 || mxa1[i-1]<=hold+num[i]) mxa1[i]=hold+num[i];
else if(i>0) mxa1[i]=mxa1[i-1];
if(hold+num[i]<=0) hold=0;
else hold+=num[i];
}
hold=0;
for(i=n-1; i>=0; i--)
{
if(i==n-1 || mxa2[i+1]<=hold+num[i]) mxa2[i]=hold+num[i];
else if(i<n-1) mxa2[i]=mxa2[i+1];
if(hold+num[i]<=0) hold=0;
else hold+=num[i];
if(i>0 && i<n-1 && mxa<mxa1[i]+mxa2[i+1] || i==n-2)
mxa=mxa1[i]+mxa2[i+1];
}
printf("%d\n", mxa);
}
return 0;
}
HDU1003
#include
<
stdio.h
>
#include < string .h >
int main()
{
int t, k;
scanf("%d", &t);
for(k=1; k<=t; k++)
{
int n;
scanf("%d", &n);
int i, num, mxa=0, hold=0, ib=0, ie=0, ihb=0;
for(i=0; i<n; i++)
{
scanf("%d", &num);
if(i==0 || mxa<hold+num) mxa=hold+num, ib=ihb, ie=i;
if(hold+num<0) hold=0, ihb=i+1;
else hold+=num;
}
printf("Case %d:\n", k);
printf("%d %d %d\n", mxa, ib+1, ie+1);
if(k!=t)printf("\n");
}
return 0;
}
#include < string .h >
int main()
{
int t, k;
scanf("%d", &t);
for(k=1; k<=t; k++)
{
int n;
scanf("%d", &n);
int i, num, mxa=0, hold=0, ib=0, ie=0, ihb=0;
for(i=0; i<n; i++)
{
scanf("%d", &num);
if(i==0 || mxa<hold+num) mxa=hold+num, ib=ihb, ie=i;
if(hold+num<0) hold=0, ihb=i+1;
else hold+=num;
}
printf("Case %d:\n", k);
printf("%d %d %d\n", mxa, ib+1, ie+1);
if(k!=t)printf("\n");
}
return 0;
}