Pagini recente » Borderou de evaluare (job #2336186) | Borderou de evaluare (job #2016123) | Borderou de evaluare (job #1261736) | Cod sursa (job #728000) | Cod sursa (job #47212)
Cod sursa(job #47212)
const
infinit=20000000;
lim=200000;
var
a:array[1..lim] of longint;
i,j,n,total,lmax,lmin,lx,ln,catmax,undemax,catmin,undemin,max,pmax,min,pmin:longint;
begin
assign(input,'buline.in');
reset(input);
readln(n);
read(a[1],j);
if j=0 then a[1]:=-a[1];
total:=a[1];
max:=-infinit; catmax:=a[1]; undemax:=1; lx:=1;
min:=infinit; catmin:=a[1]; undemin:=1; ln:=1;
if catmax>max then
begin
max:=catmax;
pmax:=undemax;
lmax:=lx;
end;
if catmin<min then
begin
min:=catmin;
pmin:=undemin;
lmin:=ln;
end;
for i:=2 to n do
begin
read(a[i],j);
if j=0 then a[i]:=-a[i];
total:=total+a[i];
if catmax>0
then
begin
catmax:=catmax+a[i];
inc(lx);
end
else
begin
catmax:=a[i];
undemax:=i;
lx:=1;
end;
if catmax>max then
begin
max:=catmax;
pmax:=undemax;
lmax:=lx;
end;
if catmin<0
then
begin
catmin:=catmin+a[i];
inc(ln);
end
else
begin
catmin:=a[i];
undemin:=i;
ln:=1;
end;
if catmin<min then
begin
min:=catmin;
pmin:=undemin;
lmin:=ln;
end;
end;
close(input);
assign(output,'buline.out');
rewrite(output);
if max>total-min
then writeln(max,' ',pmax,' ',lmax)
else writeln(total-min,' ',pmin+lmin,' ',n-lmin);
close(output);
end.