churchill 2008-07-08 19:31:00
点我顶贴
收藏
删除
var
n,i,p,q,max,min,m,r:longint;
rmb,rp,time:array[1..100]of longint;
f,t:array[0..100,0..100]of longint;
begin
readln(n);
for i:=1 to n do
readln(rmb[i],rp[i],time[i]);
readln(m,r);
for i:=1 to n do
for p:=m-rmb[i] downto 0 do
for q:=r-rp[i] downto 0 do
if f[p,q]+1>=f[p+rmb[i],q+rp[i]]
then begin
if f[p,q]+1>max then max:=f[p,q]+1;
if ((t[p,q]+time[i]<t[p+rmb[i],q+rp[i]])and(f[p+rmb[i],q+rp[i]]=f[p,q]+1))or(f[p,q]+1>f[p+rmb[i],q+rp[i]])
then t[p+rmb[i],q+rp[i]]:=t[p,q]+time[i];
f[p+rmb[i],q+rp[i]]:=f[p,q]+1;
end;
min:=999999;
for p:=0 to m do
for q:=0 to r do
if (f[p,q]=max)and(t[p,q]<min)
then min:=t[p,q];
writeln(min);
end.