Cod sursa(job #96994)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 4 noiembrie 2007 15:17:06
Problema Rj Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.44 kb
const d1:array[1..8]of longint=(1,-1,0,0,1,-1,1,-1);
      d2:array[1..8]of longint=(0,0,-1,1,1,1,-1,-1);
var r,ju:array[1..10000,1..2]of longint;
    m1,m2:array[0..101,0..101] of longint;
    n,i,m,j,k,c1,c2,x,y,max:longint;
    c:char;
    f:text;
begin
   assign(f,'rj.in');
   reset(f);
   readln(f,n,m);
   for i:=1 to n do
   BEGIN
   for j:=1 to m do
   begin
   read(f,c);
   if c=' ' then begin m1[i,j]:=-1;
                       m2[i,j]:=-1;
                 end
            else
   if c='X' then begin m1[i,j]:=-2;
                       m2[i,j]:=-2;
                 end
            else
   if c='R' then begin m1[i,j]:=0;
                       r[1,1]:=i;
                       r[1,2]:=j;
                 end
            else
   if c='J' then begin m2[i,j]:=0;
                       ju[1,1]:=i;
                       ju[1,2]:=j;
                 end;
   end;
   READLN(f);
   END;
   close(f);
   assign(f,'rj.out');
   rewrite(f);
   k:=1;
   c1:=1;
   repeat
   c2:=k;
   for i:=c1 to k do
   for j:=1 to 8 do
   begin
   x:=r[i,1]+d1[j];
   y:=r[i,2]+d2[j];
   if(m1[x,y]=-1)and(x>0)and(y>0)and(x<=n)and(y<=m)then begin m1[x,y]:=m1[r[i,1],r[i,2]]+1;
                                                              c2:=c2+1;
                                                              r[c2,1]:=x;
                                                              r[c2,2]:=y;
                                                        end;
   end;
   c1:=k+1;
   k:=c2;
   until c1>k;
   k:=1;
   c1:=1;
   repeat
   c2:=k;
   for i:=c1 to k do
   for j:=1 to 8 do
   begin
   x:=ju[i,1]+d1[j];
   y:=ju[i,2]+d2[j];
   if(m2[x,y]=-1)and(x>0)and(y>0)and(x<=n)and(y<=m)then begin m2[x,y]:=m2[ju[i,1],ju[i,2]]+1;
                                                              c2:=c2+1;
                                                              ju[c2,1]:=x;
                                                              ju[c2,2]:=y;
                                                        end;
   end;
   c1:=k+1;
   k:=c2;
   until c1>k;
   max:=10000;
   x:=0;
   y:=0;
   for i:=1 to n do
   for j:=1 to m do
   if(m1[i,j]=m2[i,j])and(m1[i,j]<max)and(m1[i,j]>0)then begin max:=m1[i,j];
                                                 x:=i;
                                                 y:=j;
                                           end;
   writeln(f,max+1,' ',x,' ',y);
   close(f);
end.