var
v:array [1..25] of integer;
w:array [1..25] of longint;
N,m:integer;
sum:longint;
money:integer;
tmp:longint;
i:integer;
procedure init;
var
i:integer;
begin
read(N,m);
for i:=1 to m do
begin
read(v[i],w[i]);
w[i]:=w[i]*v[i];
end;
end;
procedure zhengli;
var
i,j,temp:integer;
begin
for i:=1 to m-1 do
for j:=i+1 to m do
begin
if w[i]<w[j] then
begin
temp:=w[i];
w[i]:=w[j];
w[j]:=temp;
temp:=v[i];
v[i]:=v[j];
v[j]:=temp;
end;
end;
end;
procedure dig(i:integer);
var
flag:boolean;
begin
while i<=m do
begin
flag:=money+v[i]<=N;
if flag then begin
sum:=sum+w[i];
money:=money+v[i];end;
inc(i);
dig(i);
if flag then begin
sum:=sum-w[i];
money:=money-v[i];end;
end;
if sum>tmp then tmp:=sum;
end;
begin
init;
zhengli;
dig(1);
write(tmp);
end.
总是WA20