Pagini recente » Cod sursa (job #1727128) | Cod sursa (job #568515) | Cod sursa (job #3190570) | Cod sursa (job #2082111) | Cod sursa (job #136893)
Cod sursa(job #136893)
var fi,fo:text;
n,i,nb,cl,pozi,suma,s,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);
s:=0; suma:=0; ss[0]:=0;
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.