杭电1003,纠结,其大侠帮忙看看哪错了
#include <stdio.h>int main()
{
int a[100002]={0},n,m,flag=0;
long N,yisum=-1001,j,i,p1,p2,ersum=0,k=0,position;
while(scanf("%d",&n)!=EOF)
{
m=n;
while(n--)
{
if(m>=0&&m<=20)
{
scanf("%ld",&N);
for(j=0;j<N;j++)
scanf("%d",&a[j]);
for(j=0;j<N;j++)
if(a[j]>0)
{
flag=1;
break;
}
if(!flag)
for(j=0;j<N;j++)
if(yisum<a[j])
{
yisum=a[j];
position=j;
}
for(j=0;j<N&&flag;j++)
{
ersum=ersum+a[j];
if(ersum<0)
{
ersum=0;
continue;
}
else
if(yisum<ersum)
{
yisum=ersum;
p2=j;
}
}
ersum=0;
for(k=p2;k>=0;k--)
{
ersum=ersum+a[k];
if(ersum==yisum)
p1=k;
}
printf("Case %d:\n",m-n);
if(flag)
printf("%ld %ld %ld\n",yisum,p1+1,p2+1);
else
printf("%ld %ld %ld\n",yisum,position+1,position+1);
yisum=-1001;ersum=0;
for(j=0;j<100002;j++)
a[j]=0;
}
if(n)
printf("\n");
}
}
return 0;
}