Pagini recente » Cod sursa (job #2534589) | Cod sursa (job #17699) | Cod sursa (job #2308277) | Cod sursa (job #1427864) | Cod sursa (job #1414841)
Program Energii;
var buf1, buf2 : array[1..1 shl 17] of char;
n, e, i, j : longint;
w, p : array [1..10000] of longint;
zer, un : integer;
a : array [0..1, 0..10000] of longint;
fi, fo : text;
function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;
procedure swap(var a,b:integer);
var x : integer;
begin x:=a;
a:=b;
b:=x;
end;
begin
settextbuf(fi,buf1);
settextbuf(fo,buf2);
zer:=0; un:=1;
assign(fi,'energii.in'); reset(fi);
assign(fo,'energii.out'); rewrite(fo);
readln(fi,n);
readln(fi,e);
for i:=0 to 1 do
for j:=0 to e do a[i,j]:=1 shl 30;
for i:=1 to n do readln(fi,w[i],p[i]);
for i:=1 to n do begin
for j:=1 to e do if w[i]>=j then a[un,j]:=min(a[zer,j],p[i])
else a[un,j]:=min(a[zer,j-w[i]]+p[i],a[zer,j]);
swap(zer,un);
end;
if min(a[zer,e],a[un,e])=1shl 30 then writeln(fo,'-1')else
writeln(fo,min(a[zer,e],a[un,e]));
close(fi);
close(fo);
end.