Cod sursa(job #294893)
Utilizator | Data | 2 aprilie 2009 20:29:59 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 2.84 kb |
program alex;
const b:array[1..8]of -1..1=(-1,-1,0,1,1,1,0,-1);
d:array[1..8]of -1..1=(0,1,1,1,0,-1,-1,-1);
var ro,ju:array[1..51,1..51]of longint;
f:text;
q:string;
e:boolean;
m,n,i,j,min,l,c,x,y,k,h:longint;
begin
assign(f,'rj.in');reset(f);
readln(f,m,n);
for i:=1 to m do
begin
readln(f,q);
j:=0;
for j:=1 to length(q) do
case q[j] of
' ':begin
ro[i,j]:=-1;
ju[i,j]:=-1;
end;
'X':begin
ro[i,j]:=-2;
ju[i,j]:=-2;
end;
'R':begin
x:=i;
y:=j;
ju[i,j]:=-2;
end;
'J':begin
l:=i;
c:=j;
ro[i,j]:=-2;
end;
end;
if length(q)<n then for j:=length(q)+1 to n do
begin
ro[i,j]:=-1;
ju[i,j]:=-1;
end;
end;
close(f);
ro[x,y]:=1;
ju[l,c]:=1;
k:=1;
repeat
e:=false;
for i:=1 to m do
for j:=1 to n do
begin
if ro[i,j]=k then begin
for h:=1 to 8 do
if ro[i+b[h],j+d[h]]=-1 then begin
ro[i+b[h],j+d[h]]:=k+1;
e:=true;
end
end;
if ju[i,j]=k then begin
for h:=1 to 8 do
if ju[i+b[h],j+d[h]]=-1 then begin
ju[i+b[h],j+d[h]]:=k+1;
e:=true;
end
end;
end;
k:=k+1;
until(e=false);
l:=500000;
c:=500000;
min:=999999999;
for i:=1 to m do
for j:=1 to n do
if(ro[i,j]=ju[i,j])and(ro[i,j]<>-2)and(ro[i,j]<>-1)then if ro[i,j]<min then begin
min:=ro[i,j];
l:=i;
c:=j;
end
else if ro[i,j]=min then if i<l then begin
l:=i;
c:=j;
end
else if i=l then if j<c then c:=j;
assign(f,'rj.out');rewrite(f);
writeln(f,min,' ',l,' ',c);
close(f);
end.