Cod sursa(job #1375210)
Utilizator | Data | 5 martie 2015 12:36:19 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 3.36 kb |
const irany:array[1..2,1..8] of integer=((-1,-1,0,1,1, 1, 0,-1),
( 0, 1,1,1,0,-1,-1,-1));
type tipus=record
rom,jul:integer;
end;
var f,g:text;
c:char;
b:boolean;
min,x,y,m,n,i,j,kr,kj,l:integer;
r:array[0..101,0..101]of tipus;
begin
assign(f,'rj.in');
assign(g,'rj.out');
reset(f);
rewrite(g);
readln(f,m,n);
for i:=1 to m do
for j:=1 to n+2 do
begin
read(f,c);
if pos(c,'XRJ rjx')>0 then
case c of ' ':begin
r[i,j].rom:=0;
r[i,j].jul:=0;
end;
'X':begin
r[i,j].rom:=-1;
r[i,j].jul:=-1;
end;
'R':begin
r[i,j].rom:=1;
r[i,j].jul:=0;
end;
'J':begin
r[i,j].jul:=1;
r[i,j].rom:=0;
end;
end;
end;
for i:=1 to n do
begin
r[0,i].rom:=-1;
r[m+1,i].rom:=-1;
r[0,i].jul:=-1;
r[m+1,i].jul:=-1;
end;
for i:=1 to m do
begin
r[i,0].rom:=-1;
r[i,n+1].rom:=-1;
r[i,0].jul:=-1;
r[i,n+1].jul:=-1;
end;
for i:=1 to m do
begin
for j:=1 to n do write(g,r[i,j].rom:3);
writeln(g);
end;
kr:=1;
kj:=1;
repeat
b:=true;
for i:=1 to m do
for j:=1 to n do
begin
if r[i,j].rom=kr then
for l:=1 to 8 do
if (r[i+irany[1,l],j+irany[2,l]].rom=0)or
(r[i+irany[1,l],j+irany[2,l]].rom>kr+1)then
begin
r[i+irany[1,l],j+irany[2,l]].rom:=kr+1;
b:=false;
end;
if r[i,j].jul=kj then
for l:=1 to 8 do
if (r[i+irany[1,l],j+irany[2,l]].jul=0)or
(r[i+irany[1,l],j+irany[2,l]].jul>kj+1)then
begin
r[i+irany[1,l],j+irany[2,l]].jul:=kj+1;
b:=false;
end;
end;
inc(kj);
inc(kr);
until b;
min:=maxint;
for i:=1 to m do
for j:=1 to n do
if (r[i,j].rom=r[i,j].jul)and(r[i,j].rom<>-1)and(r[i,j].rom<min) then
begin
min:=r[i,j].rom;
x:=i;
y:=j;
end;
writeln(g,min,' ',x,' ',y);
close(g);
end.