Pagini recente » Cod sursa (job #3170146) | Cod sursa (job #38552) | Cod sursa (job #1623549) | Cod sursa (job #1943766) | Cod sursa (job #43671)
Cod sursa(job #43671)
const maxn = 200001;
inf = 2000000000;
var f:text;
n,i,ml,mp,t,max:longint;
a,c,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:=a[1];
mp:=1;
ml:=1;
for i:=2 to n do
begin
c[i]:=a[i];
d[i]:=1;
if (c[i-1]>0) and (d[i-1]<n-1) 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;
max:=max+t;
mp:=mp+1;
if mp>n then mp:=mp mod n;
ml:=n-ml;
while ml<=0 do ml:=ml+n;
for i:=1 to n do a[i]:=-a[i];
c[1]:=a[1];
d[1]:=1;
if a[1]>max then
begin
max:=a[1];
mp:=1;
ml:=1;
end;
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;
end;
procedure writedata;
begin
assign(f,'buline.out');
rewrite(f);
writeln(f,max,' ',mp,' ',ml);
close(f);
end;
begin
readdata;
solve;
writedata;
end.