Cod sursa(job #39774)

Utilizator andrewgPestele cel Mare andrewg Data 26 martie 2007 22:44:02
Problema Buline Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.23 kb
const maxn = 200001;

var f:text;
    n,i,ml,mp,t,max:longint;
    sol:longint;
    a,c,c1,d:array[1..maxn]of longint;

procedure readdata;
var x,y:longint;
begin
   assign(f,'buline.in');
   reset(f);
   readln(f,n);
   for i:=1 to n do
   begin
      readln(f,x,y);
      if y=0 then y:=-1;
      a[i]:=x*y;
      t:=t+a[i];
   end;
   close(f);
end;

procedure solve;
begin
   c[1]:=a[1];
   d[1]:=1;
   max:=0;
   for i:=2 to n do
   begin
      c[i]:=a[i];
      d[i]:=1;
      if c[i-1]>0 then
      begin
         c[i]:=c[i]+c[i-1];
         d[i]:=d[i]+d[i-1];
      end;
      if c[i]>max then
      begin
         max:=c[i];
         mp:=i-d[i]+1;
         ml:=d[i];
      end;
   end;
   sol:=c[n];
   c1[1]:=a[1]+sol;
   for i:=2 to n-d[n] do
   begin
      c1[i]:=a[i];
      if c1[i-1]>0 then
      begin
         c1[i]:=c1[i]+c1[i-1];
      end;
      if c1[i]>max then
      begin
         max:=c1[i];
         mp:=n-d[n]+1;
         ml:=d[n]+i;
      end;
      if c1[i]<0 then break;
   end;
end;

procedure writedata;
begin
   assign(f,'buline.out');
   rewrite(f);
   writeln(f,max,' ',mp,' ',ml);
   close(f);
end;

begin
   readdata;
   solve;
   writedata;
end.