Cod sursa(job #609776)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 23 august 2011 12:06:15
Problema Rj Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.67 kb
Program Rj;
 type punct=record
      x,y:integer;
      end;
var a:array [0..101,0..101] of integer;
   b,c:array [1..10000] of punct;
   i,j,k,n,m,k1,t:integer;
   ch:char;
   fi,fo:text;
procedure control(x,y:integer);
begin
  if a[x-1,y]=-1 then begin
                       a[x-1,y]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x-1;
                       c[k].y:=y;
                       end;
   if a[x+1,y]=-1 then begin
                       a[x+1,y]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x+1;
                       c[k].y:=y;
                       end;
    if a[x,y-1]=-1 then begin
                       a[x,y-1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x;
                       c[k].y:=y-1;
                       end;
     if a[x,y+1]=-1 then begin
                       a[x,y+1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x;
                       c[k].y:=y+1;
                       end;
     if a[x+1,y+1]=-1 then begin
                       a[x+1,y+1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x+1;
                       c[k].y:=y+1;
                       end;
     if a[x-1,y+1]=-1 then begin
                       a[x-1,y+1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x-1;
                       c[k].y:=y+1;
                       end;
     if a[x+1,y-1]=-1 then begin
                       a[x+1,y-1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x+1;
                       c[k].y:=y-1;
                       end;
     if a[x-1,y-1]=-1 then begin
                       a[x-1,y-1]:=a[x,y]+1;
                       inc(k);
                       c[k].x:=x-1;
                       c[k].y:=y-1;
                       end;
    end;
begin
 assign(fi,'rj.in');
  assign(fo,'rj.out');
 reset(fi);
 rewrite(fo);
 readln(fi,n,m);
 for i:=1 to n do begin
  for j:=1 to m do begin
                    read(fi,ch);
                    if ch=' ' then a[i,j]:=-1;
                    if ch='X' then a[i,j]:=-2;
                    if ch='R' then begin b[1].x:=i; b[1].y:=j; end;
                    if ch='J' then begin b[2].x:=i; b[2].y:=j; end;
                    end;
  readln(fi);
  end;
  k1:=2;
  a[b[1].x,b[1].y]:=1;
  a[b[2].x,b[2].y]:=1;
 repeat
  for i:=1 to k1 do control(b[i].x,b[i].y);
  k1:=k;
   k:=0;
  for i:=1 to k1 do b[i]:=c[i];
  inc(t);
 until k1=0;
write(fo,t,' ');
for i:=1 to n do
 for j:=1 to m do
  if a[i,j]=t then begin write(fo,i,' ',j); close(fo); exit; end;
close(fo);
end.