舍去<0的情况,其他和上一篇一样
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int a[11111];
int maxn,thisn,i,j,k;
while(scanf("%d",&k),k)
{
for(i=0;i<k;i++)
{
scanf("%d",&a[i]);
}
int p,q,flage;
maxn=a[0];
thisn=0;
p=q=a[0];
for(i=0;i<k;i++)
{
if(thisn<0) //舍去<0的情况
{
thisn=a[i];
flage=a[i]; //标记
}
else
thisn+=a[i];
if(thisn>maxn)
{
p=flage;
q=a[i];
maxn=thisn;
}
}
if(maxn<0)
{
printf("0 %d %d\n",a[0],a[k-1]);
}
else
printf("%d %d %d\n",maxn,p,q);
}
return 0;
}