记录编号 21377 评测结果 AAAAAAAAAA
题目名称 奇怪的监狱 最终得分 100
用户昵称 Gravatarmaxiem 是否通过 通过
代码语言 Pascal 运行时间 0.159 s
提交时间 2010-11-10 08:45:24 内存使用 3.94 MiB
显示代码纯文本
program prison;
var
  data:array [1..1000] of boolean;
  f:array [0..1001,0..1001] of longint;
  tmp,j,i,p,q:integer;
procedure get(x,y:integer);
var max,tmp,i:longint;
begin
	if x<y then begin
		if x=y-1 then begin
			if data[y] or data[x] then f[x,y]:=1 else f[x,y]:=0;
		end
		else begin
	               	max:=maxlongint;
			for i:=x to y do if data[i] then begin
                               if f[x,i-1]=-1 then get(x,i-1);
                               if f[i+1,y]=-1 then get(i+1,y);
	       		       tmp:=f[x,i-1]+f[i+1,y]+y-x;
	       	               if tmp<max then max:=tmp;
                       	end;
			if max<>maxlongint then f[x,y]:=max else f[x,y]:=0;
		end;
	end;
end;
begin
	assign (input,'prison.in');
	reset (input);
	readln (p,q);
	for i:=1 to q do begin
		read (tmp);
		data[tmp]:=true;
	end;
	fillchar (f,sizeof(f),$FF);
	for i:=0 to p do for j:=i downto 0 do f[i,j]:=0;
	close (output);
	assign (output,'prison.out');
	rewrite (output);
	get(1,p);
	writeln (f[1,p]);
	close (output);
end.