#include <string>
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int p[10010];
struct node{
int val,l,r;
node() {}
node(int a, int b, int c): val(a), l(b), r(c) {}
}v,ans;
int n;
void solve(int start)
{
if(start>=n) return;
int tmp,res,i;
tmp=res=0;
for(i=start; i<n; i++)
{
tmp+=p[i];
if( tmp<0 ) tmp=0;
else
{
res=tmp;
v=node(tmp,p[i],p[i]);
i++;
break;
}
}
for(;i<n;i++)
{
tmp+=p[i];
if(tmp>res)
{ v.val=res=tmp; v.r=p[i]; }
if( tmp<0 ) break;
}
if(v.val>ans.val) ans=v;
solve(i+1);
}
int main()
{
// freopen("in","r",stdin);
// freopen("out","w",stdout);
int i,flag;
while( scanf("%d",&n) && n )
{
flag=0;
for(i=0;i<n;i++)
{
scanf("%d",&p[i]);
if( p[i]>=0 ) flag++;
}
if( flag==0 )
printf("0 %d %d\n",p[0],p[n-1]);
else
{
ans=v=node(0,0,0);
solve(0);
printf("%d %d %d\n",ans.val,ans.l,ans.r);
}
}
return 0;
}
hdu 1231
最新推荐文章于 2020-03-06 17:17:17 发布