#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int k,s[10010]; void MCS() //用dp表示是dp[i+1]=max(dp[i]+s[i+1],s[i+1]);转移方程 { int l=0,ll=0,rr=0; int sum=-100000,mx=-100000; for(int i=0;i<k;i++) { if(sum+s[i]<s[i]) { l=i;sum=s[i]; } else sum+=s[i]; if(sum>mx) { mx=sum;ll=l;rr=i; } } if(mx>=0) printf("%d %d %d ",mx,s[ll],s[rr]); else printf("0 %d %d ",s[0],s[k-1]); } int main() { int n,v,c[1003],w[1003]; int dp[1003]; //滚动数组 dp数组表示重量为i时价值为多少。。 while(~scanf("%d",&k),k) { for(int i=0;i<k;i++) scanf("%d",s+i); MCS(); } return 0; }