开心的金明
来源:NOIP2006(普及组)第二题
【问题描述】
【输入文件】
(其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。)
从第2 行到第m+1 行,第j 行给出了编号为j-1的物品的基本数据,每行有2 个非负整数 v p
(其中v 表示该物品的价格(v≤10000),p 表示该物品的重要度(1~5))
【输出文件】
【输入样例】
1000 5
800 2
400 5
300 5
400 3
200 2
【输出样例】
3900
=====================
========================
{
ID:jie19952
PROG:
LANG:PASCAL
}
var
n,m:longint;
a1:array[1..25]of longint;
a2:array[1..25]of longint;
f:array[0..30000]of longint;
procedure init;
begin
assign(input,'p2.in');
assign(output,'p2.out');
reset(input); rewrite(output);
end;
procedure terminate;
begin
close(input); close(output);
halt;
end;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
procedure main;
var
i,j,v:longint;
begin
readln(n,m);
for i:=1 to m do
begin
readln(a1[i],v);
a2[i]:=a1[i]*v;
end;
fillchar(f,sizeof(f),0);
for i:=1 to m do
for j:=n downto a1[i] do
f[j]:=max(f[j],f[j-a1[i]]+a2[i]);
writeln(f[n]);
end;
begin
init;
main;
terminate;
end.