Pagini recente » Cod sursa (job #1373649) | Cod sursa (job #519967) | Cod sursa (job #2726740) | Cod sursa (job #2717331) | Cod sursa (job #26751)
Cod sursa(job #26751)
var n,st,sum,i,smin,stmin,lgmin,c: longint;
v,s,mm,poz: array[0..200000] of longint;
begin
assign(input,'buline.in'); reset(input);
read(n);
s[0]:=0; mm[0]:=-2000000001;
for i:=1 to n do
begin
read(v[i],c);
if c=0 then v[i]:=-v[i];
s[i]:=s[i-1]+v[i];
mm[i]:=mm[i-1];
poz[i]:=poz[i-1];
if (mm[i]<s[i]) then
begin
mm[i]:=s[i];
poz[i]:=i;
end;
end;
sum:=v[1];
st:=1;
smin:=sum;
stmin:=1;
lgmin:=1;
for i:=2 to n do
begin
if (i-st+1>n) then
repeat
sum:=sum-v[st];
st:=st+1;
until (sum>0) and (st<i-1);
if sum>=0 then sum:=sum+v[i]
else begin
sum:=v[i];
st:=i;
end;
if (sum>smin) then
begin
smin:=sum; stmin:=st; lgmin:=i-st+1;
end;
end;
for i:=2 to n do
begin
sum:=s[n]-s[i-1]+mm[i-1];
if (sum>smin) or
((sum=smin) and (i<stmin)) or
((sum=smin) and (i=stmin) and (lgmin<n+1-i+poz[i-1])) then
begin
smin:=sum;
stmin:=i;
lgmin:=n+1-i+poz[i-1];
end;
end;
assign(output,'buline.out'); rewrite(output);
writeln(smin,' ',stmin,' ',lgmin);
close(output);
end.