比赛 20101105 评测结果 AAAAAAAAAA
题目名称 懒人的工作 最终得分 100
用户昵称 belong.zmx 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-05 20:44:08
显示代码纯文本
program lazy(input,output);
var
 m,n:longint;
 i,j:longint;
 a:array[0..10000,1..2]of longint;
 f:array[0..10000]of longint;

procedure sort(x,y:longint);
var
  i,j:longint;
  k,p:longint;
begin
  k:=a[(x+y)div 2,1];
  i:=x;
  j:=y;
  repeat
    while a[i,1]<k do inc(i);
    while a[j,1]>k do dec(j);
    if i<=j then
    begin
      p:=a[i,1];
      a[i,1]:=a[j,1];
      a[j,1]:=p;
      p:=a[i,2];
      a[i,2]:=a[j,2];
      a[j,2]:=p;
      inc(i);
      dec(j);
    end;
  until i>j;
  if i<y then sort(i,y);
  if x<j then sort(x,j);
end;

begin
 assign(input,'lazy.in');
 reset(input);
 readln(m,n);
 for i:=1 to n do
  readln(a[i,1],a[i,2]);
 close(input);

 sort(1,n);
 j:=n;
 for i:=m downto 1 do
 if a[j,1]<>i then f[i]:=f[i+1]+1
 else
 begin
  while (a[j,1]=i) do
  begin
   if f[i]<f[i+a[j,2]] then f[i]:=f[i+a[j,2]];
   dec(j);
  end;
 end;

 assign(output,'lazy.out');
 rewrite(output);
 writeln(f[1]);
 close(output);
end.