Dacă ai 1 milion de numere şi memorie O(1) nu mai merge cu acel vector. Poţi face însă cu câteva variabile.
// variabile
best_sum, start, finish;
cur_sum, cur_start;
// iniaţializări
citeşte val
cur_sum = best_sum = val;
start = finish = cur_start = 1;
pentru i = 2, n execută
citeşte val
dacă cur_sum < 0 atunci
cur_sum = val, cur_start = i
altfel
cur_sum = cur_sum + val
dacă best_sum < cur_sum atunci
best_sum = cur_sum, start = cur_start, finish = i
// ai în best_sum valoarea subsecv de sumă maximă iar în start şi finish începutul şi sfârşitul ei
// pentru afişare mai citeşti o dată datele de intrare
Sper să fie bine ce am scris.
Văd că nu merge să scrii îngroşat în cod.