Cod sursa(job #708853)

Utilizator Buzu_Tudor_RoCont vechi Buzu_Tudor_Ro Data 7 martie 2012 12:43:58
Problema Subsecventa de suma maxima Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.88 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[1];

    for i:=n downto 1 do if c[i]>maxim then begin
                                            maxim:=c[i];
                                            j1:=i;
                                            end;
    j2:=j1; ck:=0;
    while ck<maxim do begin
                      ck:=ck+a[j2];
                      j2:=j2-1;
                      end;
    if a[j2]>0 then j2:=j2+1;
    write(fo,maxim,' ',j2,' ',j1);
    close(fi); close(fo);
end.