Cod sursa(job #1375374)

Utilizator fzsoltFerencz Zsolt fzsolt Data 5 martie 2015 13:05:11
Problema Rj Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 3.25 kb
uses math;
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 i,j,n,m,l,k,ido,x,y:integer;
    rom,jul:array[0..102,0..102] of integer;
    f,g:text;
    t,ok:boolean;
    c:char;


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);
            if pos(c,'XRJ xrj')>0 then
            if c='X' then begin rom[i,j]:=-1; jul[i,j]:=-1; end
                     else
                       if c='R' then
                          begin
                            rom[i,j]:=1;
                          end
                                else
                          if c='J' then
                             begin
                               jul[i,j]:=1;
                             end
                                   else begin rom[i,j]:=0; jul[i,j]:=0; end;
          end;
      end;

t:=false;
k:=1;
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) or
                    (rom[i+irany[1,l],j+irany[2,l]]>k+1) then
                        begin
                         rom[i+irany[1,l],j+irany[2,l]]:=k+1;
                         if jul[i+irany[1,l],j+irany[2,l]]=rom[i+irany[1,l],j+irany[2,l]] then begin
                                                                                                t:=true;
                                                                                                ido:=rom[i+irany[1,l],j+irany[2,l]];
                                                                                                x:=i;
                                                                                                y:=j;
                                                                                                end;
                        end;
          if jul[i,j]=k then
             for l:=1 to 8 do
                 if (jul[i+irany[1,l],j+irany[2,l]]=0) or
                    (jul[i+irany[1,l],j+irany[2,l]]>k+1) then
                        begin
                         jul[i+irany[1,l],j+irany[2,l]]:=k+1;
                         if jul[i+irany[1,l],j+irany[2,l]]=rom[i+irany[1,l],j+irany[2,l]] then begin
                                                                                               t:=true;
                                                                                               ido:=rom[i+irany[1,l],j+irany[2,l]];
                                                                                               x:=i;
                                                                                               y:=j;
                                                                                               end;
                        end;

        end;
  inc(k);
until t;

writeln(g,ido-1,' ',x,' ',y);
close(g);
end.