Cod sursa(job #742133)
Utilizator | 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.