比赛 |
20121108 |
评测结果 |
EEEEEEEEEE |
题目名称 |
造房子的学问 |
最终得分 |
0 |
用户昵称 |
极寒之魇 |
运行时间 |
0.004 s |
代码语言 |
Pascal |
内存使用 |
0.34 MiB |
提交时间 |
2012-11-08 11:38:14 |
显示代码纯文本
uses math;
var main:array[1..60] of boolean;
v:array[1..60,0..2] of longint;
w:array[1..60,0..2] of longint;
now:array[1..10000] of longint;
i,j,n,money,a,b,z:longint;
begin
assign(input,'budgetb.in'); reset(input);
assign(output,'budgetb.out'); rewrite(output);
readln(money,n); money:=money div 10;
fillchar(main,sizeof(main),false);
fillchar(v,sizeof(v),0);
fillchar(now,sizeof(now),0);
for i:=1 to n do
begin
readln(a,b,z);
if z=0 then begin main[i]:=true; v[i,0]:=a div 10; w[i,0]:=b; end else begin
if v[z,1]<>0 then begin v[z,2]:=a div 10; w[z,2]:=b; end else
begin v[z,1]:=a div 10; w[z,1]:=b; end; end;
end;
for i:=n downto 1 do
if main[i] then begin
for j:=money downto 0 do
begin
if j>=v[i,0] then now[j]:=max(now[j-v[i,0]]+v[i,0]*w[i,0],now[j]);
if j>=v[i,0]+v[i,1] then now[j]:=max(now[j-v[i,0]-v[i,1]]+v[i,0]*w[i,0]+v[i,1]*w[i,1],now[j]);
if j>=v[i,0]+v[i,2] then now[j]:=max(now[j-v[i,0]-v[i,2]]+v[i,0]*w[i,0]+v[i,2]*w[i,2],now[j]);
if j>=v[i,0]+v[i,1]+v[i,2] then now[j]:=max(now[j-v[i,0]-v[i,1]-v[i,2]]+v[i,0]*w[i,0]+v[i,1]*w[i,1]+v[i,2]*w[i,2],now[j]);
end;
end;
writeln(now[money]*10);
close(output);
end.