Cod sursa(job #875825)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 10 februarie 2013 20:30:19
Problema Rj Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.78 kb
program romeo_si_julieta2004;
type matrice=array[0..102,0..102] of integer;
     element=record
     lin,col:integer;
     end;
     vect=array[0..10404]of element;
var  a,b:matrice; tmin:word; i,j,n,m,xi,yi:word;
     c:vect; pr,pj,p,aux:element; prim,ultim,k:integer;
     x:char; dl,dc:array[1..8] of -1..1;
     f,g:text;
begin
assign(f,'rj.in');reset(f);
assign(g,'rj.out');rewrite(g);
readln(f,n,m);
for i:=1 to n do begin
  for j:=1 to m do begin
                   read(f,x);
                   if x='X' then begin
                                 a[i,j]:=-1; b[i,j]:=-1;
                                 end
                      else if x=' ' then begin
                                         a[i,j]:=0; b[i,j]:=0;
                                         end
                              else if x='R' then begin
                                                 a[i,j]:=1; pr.lin:=i; pr.col:=j;
                                                 end
                                      else if x='J' then begin
                                                         b[i,j]:=1; pj.lin:=i; pj.col:=j;
                                                         end;
                   end;
                  readln(f);
                 end;
for i:=0 to n+1 do begin
                   a[i,0]:=-1;b[i,0]:=-1; a[i,m+1]:=-1;b[i,m+1]:=-1;
                   end;
for i:=0 to m+1 do begin
                   a[0,i]:=-1;b[0,i]:=-1; a[n+1,i]:=-1;b[n+1,i]:=-1;
                   end;
dl[1]:=-1;dl[2]:=0;dl[3]:=1;dl[4]:=0;dl[5]:=1;dl[6]:=-1;dl[7]:=-1;dl[8]:=1;
dc[1]:=0;dc[2]:=1;dc[3]:=0;dc[4]:=-1;dc[5]:=1;dc[6]:=-1;dc[7]:=1;dc[8]:=-1;
prim:=0;ultim:=0; c[0]:=pr;
while (prim<=ultim)do
 begin
  p:=c[prim]; inc(prim);
  for k:=1 to 8 do begin
                   aux.lin:=p.lin+dl[k]; aux.col:=p.col+dc[k];
                   if a[aux.lin,aux.col]=0 then begin
                                                a[aux.lin,aux.col]:=a[p.lin,p.col]+1;
                                                inc(ultim); c[ultim]:=aux;
                                                end;
                   end;
 end;
prim:=0;ultim:=0; c[0]:=pj; tmin:=10000;
while (prim<=ultim)do
 begin
  p:=c[prim]; inc(prim);
  for k:=1 to 8 do begin
                   aux.lin:=p.lin+dl[k]; aux.col:=p.col+dc[k];
                   if b[aux.lin,aux.col]=0 then begin
                                                b[aux.lin,aux.col]:=b[p.lin,p.col]+1;
                                                inc(ultim); c[ultim]:=aux;
                                                end;
                   end;
 end;
for i:=1 to n do
 for j:=1 to m do if (a[i,j]=b[i,j])and(a[i,j]>0)and(a[i,j]<tmin)then
  begin
   tmin:=a[i,j]; xi:=i; yi:=j;
  end;
writeln(g,tmin,' ',xi,' ',yi);
close(f); close(g);
end.