ac1121.pas

来自「Ural(Acm.timus.ru)题解 By Maigo大牛」· PAS 代码 · 共 36 行

PAS
36
字号
program ural1121;
const
  size=150;
  maxdist=5;
var
  map:array[1..size,1..size]of integer;
  h,w,i,j,a:integer;
  d,e:byte;
function cross(x,y:integer):integer;
  begin
    if (x>0) and (x<=h) and (y>0) and (y<=w) then cross:=map[x,y] else cross:=0;
  end;
begin
  readln(h,w);
  for i:=1 to h do
    for j:=1 to w do
      read(map[i,j]);

  for i:=1 to h do
    for j:=1 to w do begin
      if map[i,j]>0 then
        write(-1)
      else begin
        a:=0;
        for d:=1 to maxdist do begin
          for e:=1 to d do
            a:=a or cross(i-e,j+d-e) or cross(i-d+e,j-e)
                 or cross(i+e,j-d+e) or cross(i+d-e,j+e);
          if a>0 then break;
        end;
        write(a);
      end;
      if j=w then writeln else write(' ');
    end;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?