Pagini recente » Cod sursa (job #1144655) | Cod sursa (job #2898253) | Cod sursa (job #3189530) | Cod sursa (job #1855538) | Cod sursa (job #136863)
Cod sursa(job #136863)
var fi,fo:text;
n,i,nb,cl,pozi,pozf,suma,s,suma2,aux,l,pp:longint;
vl,poz:array[0..200000]of longint;
ss:array[0..200000]of longint;
begin
assign(fi,'buline.in'); reset(fi);
assign(fo,'buline.out'); rewrite(fo);
read(fi,n);
for i:=1 to n do
begin
read(fi,nb,cl);
if cl=1 then vl[i]:=nb
else vl[i]:=-nb;
s:=s+vl[i];
end;
for i:=1 to n do
if ss[i-1]<=0 then
begin
ss[i]:=vl[i];
poz[i]:=i;
end
else
begin
ss[i]:=ss[i-1]+vl[i];
poz[i]:=poz[i-1];
end;
for i:=1 to n do
if ss[i]>suma then
begin
suma:=ss[i];
pozi:=poz[i];
l:=i-poz[i]+1;
end;
for i:=1 to n do
begin
ss[i]:=0;
vl[i]:=-vl[i];
end;
for i:=1 to n do
if ss[i-1]<=0 then
begin
ss[i]:=vl[i];
poz[i]:=i;
end
else
begin
ss[i]:=ss[i-1]+vl[i];
poz[i]:=poz[i-1];
end;
for i:=1 to n do
if s+ss[i]>suma then
begin
suma:=s+ss[i];
if i=n then pozi:=1
else pozi:=i+1;
pp:=i-poz[i]+1;
l:=n-pp;
end;
writeln(fo,suma,' ',pozi,' ',l);
close(fi);
close(fo);
end.