Pagini recente » Cod sursa (job #1664272) | Cod sursa (job #1041789) | Cod sursa (job #2130214) | Cod sursa (job #3202219) | Cod sursa (job #281250)
Cod sursa(job #281250)
program romeoesjulia;
type tipus=record
x:0..5000;
i,j:1..100;
end;
var n,m,i,j,ri,rj,ji,jj,k,meg,megi,megj:word;
temp:char;
a:array[1..100,1..100] of -1..60000;
f,g:text;
x,y:array[1..8] of -1..1;
b:array[1..6000] of tipus;
function jelen(i,j:word):boolean;
var jo:boolean;
z:word;
begin
jo:=false;
z:=1;
while (z<=k) and (not jo) do begin
if (b[z].i=i) and (b[z].j=j) then jo:=true;
inc(z);
end;
jelen:=jo;
end;
procedure romeo;
var i,j,kk:word;
begin
for kk:=1 to 8 do begin
if(b[1].i+x[kk]>=1)and(b[1].i+x[kk]<=n)and(b[1].j+y[kk]>=1)and(b[1].j+y[kk]<=m)and(a[b[1].i+x[kk],b[1].j+y[kk]]=0)then begin
a[b[1].i+x[kk],b[1].j+y[kk]]:=b[1].x+1;
b[k+1].i:=b[1].i+x[kk];
b[k+1].j:=b[1].j+y[kk];
b[k+1].x:=b[1].x+1;
inc(k);
end;
end;
end;
procedure julia;
var i,j,kk:word;
begin
for kk:=1 to 8 do begin
if(b[1].i+x[kk]>=1)and(b[1].i+x[kk]<=n)and(b[1].j+y[kk]>=1)and(b[1].j+y[kk]<=m)and(a[b[1].i+x[kk],b[1].j+y[kk]]<>-1)then begin
if b[1].x+1<a[b[1].i+x[kk],b[1].j+y[kk]] then begin
a[b[1].i+x[kk],b[1].j+y[kk]]:=b[1].x+1;
b[k+1].i:=b[1].i+x[kk];
b[k+1].j:=b[1].j+y[kk];
b[k+1].x:=b[1].x+1;
inc(k);
end else
if (b[1].x+1=a[b[1].i+x[kk],b[1].j+y[kk]]) and (b[1].x+1<meg) and (not jelen(b[1].i+x[kk],b[1].j+y[kk])) then begin
meg:=b[1].x+1;
megi:=b[1].i+x[kk];
megj:=b[1].j+y[kk];
end;
end;
end;
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 begin
read(f,temp);
if temp=' ' then a[i,j]:=0 else
if temp='X' then a[i,j]:=-1 else
if temp='R' then begin
ri:=i;
rj:=j;
a[i,j]:=-1;
end else
if temp='J' then begin
ji:=i;
jj:=j;
a[i,j]:=-1;
end;
end;
readln(f);
end;
x[1]:=-1;y[1]:=-1;
x[2]:=-1;y[2]:=0;
x[3]:=-1;y[3]:=1;
x[4]:=0;y[4]:=-1;
x[5]:=0;y[5]:=1;
x[6]:=1;y[6]:=-1;
x[7]:=1;y[7]:=0;
x[8]:=1;y[8]:=1;
k:=1;b[k].x:=1;b[k].i:=ri;b[k].j:=rj;
while k>0 do begin
romeo;
for i:=1 to k-1 do begin
b[i].x:=b[i+1].x;
b[i].i:=b[i+1].i;
b[i].j:=b[i+1].j;
end;
dec(k);
end;
k:=1;b[k].x:=1;b[k].i:=ji;b[k].j:=jj;
meg:=65535;
while k>0 do begin
julia;
for i:=1 to k-1 do begin
b[i].x:=b[i+1].x;
b[i].i:=b[i+1].i;
b[i].j:=b[i+1].j;
end;
dec(k);
end;
{ for i:=1 to n do begin
for j:=1 to m do
write(g,a[i,j],' ');
writeln(g);
end;}
write(g,meg,' ',megi,' ',megj);
close(f);
close(g);
end.