Cod sursa(job #742133)

Utilizator Buzu_Tudor_RoCont vechi Buzu_Tudor_Ro Data 28 aprilie 2012 17:49:10
Problema Buline Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.6 kb
Program p2;
var fi,fo :text;
    max,start,finis,i,n,sum,poz,t1 : longint;
    s,a,t : array[0..410000] of longint;


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

    for i:=1 to n do begin
                     readln(fi,a[i],t1);
                     if t1=0 then a[i]:=-a[i];
                     if sum+a[i]>a[i] then sum:=sum+a[i]
                                      else begin
                                           sum:=a[i];
                                           poz:=i;
                                           end;
                     if sum>max then begin
                                     max:=sum;
                                     start:=poz;
                                     finis:=i;
                                     end;
                     s[i]:=s[i-1]+a[i];
                     if (s[t[i-1]]>s[i]) and (i<>1) then t[i]:=t[i-1]
                                                    else t[i]:=i;
                     end;

    for i:=1 to n do begin
                     if s[t[i-1]]+s[n]-s[i-1]>max then begin
                                                       max:=s[t[i-1]]+s[n]-s[i-1];
                                                       start:=i;
                                                       if (t[i-1]<i) then finis:=n+t[i-1]
                                                                     else finis:=t[i-1];
                                                       end;
                     end;
    write(fo,max,' ',start,' ',finis+1-start);
    close(fi);  close(fo);
end.