比赛 暑假培训四 评测结果 AATTTTTTTA
题目名称 采药 最终得分 30
用户昵称 chengyang 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-21 11:18:36
显示代码纯文本
program medic(f1,f2);
type
  ss=array[1..100]of boolean;
var
  b:ss;
  a:array[1..100,1..3]of integer;
  m,t,i,j,k,s,max,n:integer;
  f1,f2:text;
procedure try(s,n,i:integer; b:ss);
begin
  i:=1;
  while j>0 do begin
    while i<=m do begin
      if b[i]and (s+a[i,1]<=t) then begin;
        b[i]:=false;
        j:=j+1;
        try((s+a[i,1]),(n+a[i,2]),i,b);
      end;
      i:=i+1;
    end;
    if n>max then max:=n;
    j:=j-1; exit;
  end;
 if n>max then max:=n;
end;
Begin
  assign(f1,'medic.in'); assign(f2,'medic.out');
  reset(f1);  rewrite(f2);
  read(f1,t,m);  max:=0;
  s:=0;  i:=1;  n:=0;  j:=1;
  for i:=1 to m do begin
      readln(f1,a[i,1],a[i,2]);
  end;
  for i:=1 to m do begin
    if a[i,1]<=t then b[i]:=true
      else b[i]:=false;
  end;
  try(s,n,i,b);
  writeln(f2,max);
  close(f1); close(f2);
End.