Cod sursa(job #1376060)

Utilizator fzsoltFerencz Zsolt fzsolt Data 5 martie 2015 15:45:39
Problema Rj Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.05 kb
const irany
:array[1..2,1..8] of integer=((1,-1,0,0,-1,1,1,-1),(0,0,1,-1,1,-1,1,-1));

var rom,jul:array[0..102,0..102] of integer;
    i,j,n,m,x,y,l,k:integer;
    t:boolean;
    c:char;
    f,g:text;
procedure kesz(k,l:integer);
      begin
       t:=true;
       x:=k;
       y:=l;
      end;

begin
  assign(f,'rj.in'); reset(f);
  assign(g,'rj.out'); rewrite(g);
  readln(f,n,m);

  for i:=0 to n+1 do
     begin
      rom[i,0]:=-1;
      rom[i,m+1]:=-1;
      jul[i,0]:=-1;
      jul[i,m+1]:=-1;
     end;
  for i:=0 to m+1 do
     begin
      rom[0,i]:=-1;
      rom[n+1,i]:=-1;
      jul[0,i]:=-1;
      jul[n+1,i]:=-1;
     end;

  for i:=1 to n do
     begin
      for j:=1 to m+2 do
          begin
           read(f,c);
           case c of
             'X':begin
                  rom[i,j]:=-1;
                  jul[i,j]:=-1;
                 end;
             'R':begin
                  rom[i,j]:=1;
                 end;
             'J':begin
                  jul[i,j]:=1;
                 end;
              ' ':begin
                    rom[i,j]:=0;
                    jul[i,j]:=0;
                   end;
              end;
           end;
      end;

  k:=1;
  t:=false;
  repeat
   for i:=1 to n do
       for j:=1 to m do
         begin
           if rom[i,j]=k then
              for l:=1 to 8 do
                  if rom[i+irany[1,l],j+irany[2,l]]=0 then
                     begin
                      rom[i+irany[1,l],j+irany[2,l]]:=k+1;
                      if k+1=jul[i+irany[1,l],j+irany[2,l]] then kesz(i+irany[1,l],j+irany[2,l]);
                     end;

           if jul[i,j]=k then
              for l:=1 to 8 do
                  if jul[i+irany[1,l],j+irany[2,l]]=0 then
                     begin
                      jul[i+irany[1,l],j+irany[2,l]]:=k+1;
                      if k+1=rom[i+irany[1,l],j+irany[2,l]] then kesz(i+irany[1,l],j+irany[2,l]);
                     end;
         end;
  inc(k);
  until t;

  writeln(g,rom[x,y],' ',x,' ',y);
  close(g);
end.