Cod sursa(job #672468)

Utilizator Buzu_Tudor_RoCont vechi Buzu_Tudor_Ro Data 2 februarie 2012 10:44:02
Problema Subsecventa de suma maxima Scor 85
Compilator fpc Status done
Runda Arhiva educationala Marime 0.85 kb
Program p1;
var fi,fo : text;
    i,n,j1,j2,ck : longint;
    a,c:array[0..6000000] of longint;
    maxim:longint;

Function max(a,b:longint):longint;
begin
    if a>b then max:=a
           else max:=b;

end;

begin
    assign(fi,'ssm.in'); reset(fi); readln(fi,n);
    assign(fo,'ssm.out'); rewrite(fo);

    for i:=1 to n do read(fi,a[i]);
    c[1]:=a[1];

    for i:=2 to n do c[i]:=max(c[i-1]+a[i],a[i]);
    maxim:=c[n];
    for i:=n downto 1 do if c[i]>maxim then begin
                                        maxim:=c[i];
                                        j1:=i;
                                        end;

    j2:=j1; ck:=maxim;
    while ck>0 do begin
                  ck:=ck-a[j2];
                  j2:=j2-1;
                  end;
    j2:=j2+1;
    writeln(fo,maxim,' ',j2,' ',j1);
    close(fi); close(fo);
end.