Cod sursa(job #1375374)
Utilizator | Data | 5 martie 2015 13:05:11 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 3.25 kb |
uses math;
const irany:array[1..2,1..8] of integer=((-1,1,0,0,1,-1,-1,1),(0,0,-1,1,-1,-1,-1,1));
var i,j,n,m,l,k,ido,x,y:integer;
rom,jul:array[0..102,0..102] of integer;
f,g:text;
t,ok:boolean;
c:char;
begin
assign(f,'rj.in'); reset(f);
assign(g,'rj.out'); rewrite(g);
readln(f,n,m);
for i:=0 to n+1 do
begin
rom[i,0]:=-1;
rom[i,m+1]:=-1;
jul[i,0]:=-1;
jul[i,m+1]:=-1;
end;
for i:=0 to m+1 do
begin
rom[0,i]:=-1;
rom[n+1,i]:=-1;
jul[0,i]:=-1;
jul[n+1,i]:=-1;
end;
for i:=1 to n do
begin
for j:=1 to m+2 do
begin
read(f,c);
if pos(c,'XRJ xrj')>0 then
if c='X' then begin rom[i,j]:=-1; jul[i,j]:=-1; end
else
if c='R' then
begin
rom[i,j]:=1;
end
else
if c='J' then
begin
jul[i,j]:=1;
end
else begin rom[i,j]:=0; jul[i,j]:=0; end;
end;
end;
t:=false;
k:=1;
repeat
for i:=1 to n do
for j:=1 to m do
begin
if rom[i,j]=k then
for l:=1 to 8 do
if (rom[i+irany[1,l],j+irany[2,l]]=0) or
(rom[i+irany[1,l],j+irany[2,l]]>k+1) then
begin
rom[i+irany[1,l],j+irany[2,l]]:=k+1;
if jul[i+irany[1,l],j+irany[2,l]]=rom[i+irany[1,l],j+irany[2,l]] then begin
t:=true;
ido:=rom[i+irany[1,l],j+irany[2,l]];
x:=i;
y:=j;
end;
end;
if jul[i,j]=k then
for l:=1 to 8 do
if (jul[i+irany[1,l],j+irany[2,l]]=0) or
(jul[i+irany[1,l],j+irany[2,l]]>k+1) then
begin
jul[i+irany[1,l],j+irany[2,l]]:=k+1;
if jul[i+irany[1,l],j+irany[2,l]]=rom[i+irany[1,l],j+irany[2,l]] then begin
t:=true;
ido:=rom[i+irany[1,l],j+irany[2,l]];
x:=i;
y:=j;
end;
end;
end;
inc(k);
until t;
writeln(g,ido-1,' ',x,' ',y);
close(g);
end.