#include <stdio.h>
int main() {
for (int n, a0, ai, y, S, L, R, l, al; scanf("%d", &n) == 1 && n > 0;
printf("%d %d %d\n", y ? S : 0, y ? L : a0, y ? R : ai))
for (scanf("%d", &a0), y = (S = L = R = al = l = ai = a0) >= 0;
n > 1 && scanf("%d", &ai); y |= ai >= 0, n--)
if ((l = l > 0 ? l + ai : (al = ai)) > S) S = l, L = al, R = ai;
}
实际上,根据此题DP的原理,甚至不需要开数组存放所有元素,只需要知道最后一个数即可计算。

京公网安备 11010502036488号