Pagini recente » Cod sursa (job #693193) | Cod sursa (job #2490607) | Cod sursa (job #2514187) | Cod sursa (job #2221475) | Cod sursa (job #59143)
Cod sursa(job #59143)
program energii;
type vec= array[1..1001] of word;
var en,c:vec;
s:array[0..10001] of boolean;
c1:array[0..10001] of word;
g,n,i,j,w,vmax,cost,k:word;
f:text;
ok:boolean;
procedure schimb(var v:vec; i,j:word);
var aux:word;
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
begin
assign(f,'energii.in'); reset(f);
readln(f,g); readln(f,w);
for i:= 1 to g do
readln(f,en[i],c[i]);
close(f); k:=1;
repeat
ok:=true;
for i:= 1 to g-k do
if en[i]/c[i]<en[i+1]/c[i+1] then
begin
schimb(en,i,i+1);
schimb(c,i,i+1);
ok:=false;
end;
k:=k+1;
until ok;
s[0]:=false; cost:=65000; vmax:=0;
for i:= 1 to g do
for j:=vmax downto 0 do
if not(s[j]) then
begin
s[j+en[i]]:=false;
c1[j+en[i]]:=c1[j]+c[i];
if j+en[i]>=w then
if cost>c1[j]+c[i] then cost:=c1[j]+c[i];
end;
assign(f,'energii.out'); rewrite(f);
if cost=65000 then writeln(f,'-1')
else writeln(f,cost);
close(f);
end.