记录编号 39219 评测结果 AATTTTTEEE
题目名称 奇怪的棋盘 最终得分 20
用户昵称 Gravatarzhangchi 是否通过 未通过
代码语言 Pascal 运行时间 10.229 s
提交时间 2012-07-07 13:24:04 内存使用 0.17 MiB
显示代码纯文本
var
  n,k,i,j,ans:longint;
  h:array[1..100] of longint;
  map:array[0..101,0..101] of boolean;
  procedure dfs(step,num:longint);
  var
    i,j,mark:longint;
  begin
    if num>k then exit;
    if n-step<k-num then exit;
    if step=n then
      begin
        if num=k then inc(ans);
        exit;
      end;
    dfs(step+1,num);
    for i:=1 to h[step+1] do
      begin
        if map[step+1,i]=true then
          begin
            mark:=step+1;
            while map[mark,i]=true do
              begin
                map[mark,i]:=false;
                inc(mark);
              end;
            dec(mark);
            dfs(step+1,num+1);
            for j:=step+1 to mark do
              map[j,i]:=true;
          end;
      end;
  end;
begin
  assign(input,'boarda.in'); reset(input);
  assign(output,'boarda.out'); rewrite(output);
  readln(n,k);
  for i:=1 to n do
    begin
      read(h[i]);
      for j:=1 to h[i] do
        map[i,j]:=true;
    end;
  dfs(0,0);
  writeln(ans);
  close(input); close(output);
end.