这一题跟着感觉走就对了。完全无需二分,只要贪心即可,按照质量大,力气大排序即可。
程序:
var
w,s:array[0..110000]of longint;
n,i,tot,risk:longint;
procedure qsort(l,r:longint);
var
i,j,x,t:longint;
begin
i:=l;j:=r;x:=w[(l+r)shr 1]+s[(l+r)shr 1];
repeat
while w[i]+s[i]>x do i:=i+1;
while w[j]+s[j]<x do j:=j-1;
if i<=j then
begin
t:=w[i];w[i]:=w[j];w[j]:=t;
t:=s[i];s[i]:=s[j];s[j]:=t;
i:=i+1;j:=j-1;
end;
until i>j;
if i<r then qsort(i,r);
if j>l then qsort(l,j);
end;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(w[i],s[i]);
tot:=tot+w[i];
end;
qsort(1,n);
risk:=-maxlongint;
for i:=1 to n do
begin
tot:=tot-w[i];
risk:=max(risk,tot-s[i]);
end;
write(risk);
end.