Cod sursa(job #325874)
program suma;{dinamic}
type vector=array[0..2000] of integer;
vector_sume=array[0..5000] of longint;
var a:vector;
n:integer;
i,j,pi,ps:longint;
vs,vsm:vector_sume;
summax,min:longint;
f,g:text;
begin
assign(f,'ssm.in'); reset(f);
read(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);
assign(g,'ssm.out'); rewrite(g);
summax:=vs[0];
for i:=1 to n do vs[i]:=a[i]+vs[i-1];
min:=vs[0];
for i:=1 to n do begin
if i>1 then vsm[i]:=(vs[i]-min)
else vsm[i]:=vs[i];
if (min>vs[i]) then begin min:=vs[i]; if pi<=ps then pi:=i+1; end;
if (summax<vsm[i])then begin summax:=vsm[i]; ps:=i; end;
end;
writeln(g,summax,' ',pi,' ',ps);
close(g);
end.