34 lines
619 B
Plaintext
34 lines
619 B
Plaintext
gsss(list l, integer &start, &end, &maxsum)
|
|
{
|
|
integer e, f, i, sum;
|
|
|
|
end = f = maxsum = start = sum = 0;
|
|
for (i, e in l) {
|
|
sum += e;
|
|
if (sum < 0) {
|
|
sum = 0;
|
|
f = i + 1;
|
|
} elif (maxsum < sum) {
|
|
maxsum = sum;
|
|
end = i + 1;
|
|
start = f;
|
|
}
|
|
}
|
|
}
|
|
|
|
main(void)
|
|
{
|
|
integer start, end, sum;
|
|
list l;
|
|
|
|
l = list(-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1);
|
|
gsss(l, start, end, sum);
|
|
o_("Max sum ", sum, "\n");
|
|
if (start < end) {
|
|
l.ocall(o_, 1, start, end - 1, " ");
|
|
o_newline();
|
|
}
|
|
|
|
0;
|
|
}
|