Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18297 Accepted Submission(s): 8116
#include <stdio.h> #include <string.h> #define N 10005 int a[N],dp[N]; int main() { int n,i,p,x,y,maxx; while(~scanf("%d",&n),n) { for(i = 1 ; i <= n ; i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); maxx = -1; p = 1; for(i = 1 ; i <= n ; i++) { if(dp[i-1]+a[i]>=0) { dp[i] = dp[i-1]+a[i]; if(a[i]>=0&&maxx<dp[i]){ x = p; y = i; maxx = dp[i]; } }else p = i+1; } if(maxx<0) printf("0 %d %d\n",a[1],a[n]); else printf("%d %d %d\n",maxx,a[x],a[y]); } return 0; }
原文:http://www.cnblogs.com/llei1573/p/3850995.html