简单的dp, 但是……
看清题意,输出的是最大子段和, 子段第一数和最后数(不是下标…)
#include <cstdio>
const int MAXN = 10010;
int a[MAXN];
int main()
{
int n;
scanf("%d", &n);
int t, tmp, lt;
int ans = -1, l, r;
for(int i = 0; i < n; i++)
{
scanf("%d", &t);
a[i] = t;
if(i > 0 && tmp > 0)
t += tmp;
else
lt = i;
if(ans < t)
{
ans = t;
l = lt;
r = i;
}
tmp = t;
}
if (ans != -1)
printf("%d %d %d\n", ans, a[l], a[r]);
else
printf("0 %d %d\n", a[0], a[n-1]);
return 0;
}