#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
#include <set>
#define MAXN 10005
using namespace std;
int data[MAXN],dp[MAXN];
int main(){
int N,i,j;
int mx,st,ed,_st,_ed;
while(scanf("%d",&N),N){
dp[0]=0;
int mark=1,temp;
scanf("%d",&data[1]);
mx=data[1];
for(i=2;i<=N;i++) {
scanf("%d",&data[i]);
if(data[i]>=0) mark=0;
}
if(mx<0&&mark) {
printf("0 %d %d\n",data[1],data[N]);
continue;
}
_st=_ed=st=ed=1;
for(i=1;i<=N;i++){
temp=dp[i-1]+data[i];
if(temp < 0){
dp[i]=0;
st=ed=i+1;
}//if
else{
dp[i]=temp;
ed=i;
}//else
if(temp>mx){
mx=temp;
_st=st;
_ed=ed;
}//if
}//for
printf("%d %d %d\n",mx,data[_st],data[_ed]);
}//while
}
hdu1231最大连续子序列(简单的动态规划)
最新推荐文章于 2020-06-23 00:42:52 发布