Cod sursa(job #686983)
Utilizator | Data | 21 februarie 2012 23:39:28 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 2.74 kb |
const nmax=100;
type mr=array[1..nmax,1..nmax]of integer;
const dx:array[1..8] of -1..1=(0,1,1,1,0,-1,-1,-1);
dy:array[1..8] of -1..1=(1 ,1, 0 ,-1 ,-1 ,-1 ,0 ,1);
var n,m,i,j,xr,yr,xj,yj:integer;
a:array[1..nmax,1..nmax] of char;
f,g:text;
aj:mr;
ar:mr;
procedure parcurge(x0,y0:integer;var d:mr);
var x,y,pi,ps,i,j:integer;
cl:array[1..nmax]of integer;
cc:array[1..nmax]of integer;
begin
for i:=1 to n do
for j:=1 to m do d[i,j]:=-1;
pi:=1;
ps:=1;
d[x0,y0]:=1;
cl[pi]:=x0;
cc[pi]:=y0;
while pi<=ps do
begin
x:=cl[pi];
y:=cc[pi];
for i:=1 to 8 do
if ((x+dx[i])<=n)and((x+dx[i])>=1) and ((y+dy[i])<=m)and ((y+dy[i])>=1)
and (a[x+dx[i],y+dy[i]]=' ') and (d[x+dx[i],y+dy[i]]=-1) then
begin
ps:=ps+1;
cl[ps]:=x+dx[i];
cc[ps]:=y+dy[i];
d[x+dx[i],y+dy[i]]:=d[x,y]+1;
end;
pi:=pi+1;
end;
end;
procedure afisare;
var xmin,ymin,tmin:integer;
begin
tmin:=nmax*nmax+1;xmin:=-1;ymin:=-1;
for i:=1 to n do
for j:=1 to m do if (ar[i,j]=aj[i,j]) and (ar[i,j]<>-1) then
if ar[i,j]<tmin then
begin
tmin:=ar[i,j];
xmin:=i;
ymin:=j;
end;
writeln(g,tmin,' ',xmin,' ',ymin);
close(g);
end;
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 read(f,a[i,j]);
READLN(F);
END;
for i:=1 to n do
for j:=1 to m do
if a[i,j]='R' then
begin
xr:=i;
yr:=j;
a[i,j]:=' ';
end
else if a[i,j]='J' then
begin
xj:=i;
yj:=j;
a[i,j]:=' ';
end;
parcurge(xr,yr,ar);
parcurge(xj,yj,aj);
afisare;
end.