Cod sursa(job #702087)
type rec=record
pr,eng:integer;end;
var fab:array[1..5001]of rec; f,g:text; ge,i,w,j,cos,k,xx:integer; aux:rec;
begin
assign(f,'energii.in');reset(f);
assign(g,'energii.out');rewrite(g);
readln(f,ge);
readln(f,w);
for i:=1 to ge do
readln(f,fab[i].eng,fab[i].pr);
for i:=1 to ge-1 do
for j:=i+1 to ge do
if fab[i].eng>fab[j].eng then begin aux:=fab[i];
fab[i]:=fab[j];
fab[j]:=aux; end;i:=0; k:=0;
while (k<w)or(i<ge) do begin i:=i+1;
k:=k+fab[i].eng;
cos:=cos+fab[i].pr; end; xx:=i;
for i:=1 to xx-1 do
for j:=i+1 to xx do
if fab[i].pr>fab[j].pr then begin aux:=fab[i];
fab[i]:=fab[j];
fab[j]:=aux; end;
for j:=xx downto 1 do
if k-fab[j].eng>=w then begin
cos:=cos-fab[j].pr; k:=k-fab[j].eng; end;
if (k<w)and(i=ge) then write(g,-1) else write(g,cos);
close(f);
close(g);
end.