比赛 20101101 评测结果 C
题目名称 奇怪的监狱 最终得分 0
用户昵称 wo shi 刘畅 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-01 20:44:10
显示代码纯文本
var
  min,p,q:longint;
  a:array[0..2000]of longint;
  f:array[0..2000]of boolean;

function now(k:longint):longint;
var
  i,j:longint;
begin
  i:=k;
  j:=k;
  while not f[i-1] do dec(i);
  while not f[j+1] do inc(j);
  exit(j-i);
end;

procedure go(k,m:longint);
var
  i:longint;
begin
  if k=q+1 then
  begin
    if m<min then min:=m;
    exit;
  end;
  for i:=1 to q do
  if not f[a[i]] then
  begin
    f[a[i]]:=true;
    go(k+1,m+now(a[i]));
    f[a[i]]:=false;
  end;
end;

procedure init;
var
  i:longint;
begin
  assign(input,'prison.in'); reset(input;
  assign(output,'prison.out'); rewrite(output);
  readln(p,q);
  for i:=1 to q do read(a[i]);
  f[0]:=true;
  f[p+1]:=true;
  min:=maxlongint;
end;

begin
  init;
  go(1,0);
  writeln(min);
  close(input);
  close(output);
end.