Cod sursa(job #183598)

Utilizator mariuscris90giuroiu marius mariuscris90 Data 22 aprilie 2008 13:22:00
Problema Rj Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.87 kb

program romeosijulieta;
type mat=array[0..101,0..101] of integer;
     vec=array[1..8] of record
                     x,y:integer;end;
     vector=array[1..1000] of record
                            x,y:integer;end;
var ff,g:text;
    d:char;
    a:mat;
    x:vec;
    b,c,e,f:vector;
    t:boolean;
    lr,cr,lj,cj,k,n,m,i,j,y,nrr,nrj,nr2r,nr2j,l,lc,finl,finlc:integer;
begin
assign(ff,'rj.in');assign(g,'rj.out');reset(ff);rewrite(g);
read(ff,n,m);
for i:=1 to n do BEGIN
READLN(FF);
for j:=1 to m do begin
read(ff,d);
if d='R' then begin lr:=i;cr:=j;a[i,j]:=-2;end;
if d='J' then begin lj:=i;cj:=j;a[i,j]:=-3;end;
if d='X' then a[i,j]:=-1;
end;
END;
x[1].x:=1;x[1].y:=1;
x[2].x:=-1;x[2].y:=-1;
x[3].x:=-1;x[3].y:=1;
x[4].x:=1;x[4].y:=-1;
x[5].x:=0;x[5].y:=1;
x[6].x:=1;x[6].y:=0;
x[7].x:=0;x[7].y:=-1;
x[8].x:=-1;x[8].y:=0;
for i:=0 to n+1 do begin
a[i,0]:=-1;a[i,m+1]:=-1;end;
for i:=0 to m+1 do begin
a[0,i]:=-1;a[n+1,i]:=-1;end;
b[1].x:=lr;
b[1].y:=cr;
c[1].x:=lj;
c[1].y:=cj;k:=1;
nrr:=1;nrj:=1;t:=true;
repeat
nr2r:=0;
nr2j:=0;
k:=k+1;
for i:=1 to nrr do
for j:=1 to 8 do begin
l:=b[i].x+x[j].x;
lc:=b[i].y+x[j].y;
if a[l,lc]=0 then begin
nr2r:=nr2r+1;e[nr2r].x:=l;
e[nr2r].y:=lc;a[l,lc]:=-2;
end;end;
for i:=1 to nr2r do begin
b[i].x:=e[i].x;
b[i].y:=e[i].y;end;
nrr:=nr2r;
for i:=1 to nrj do
for j:=1 to 8 do begin
l:=c[i].x+x[j].x;
lc:=c[i].y+x[j].y;
if a[l,lc]=0 then begin
nr2j:=nr2j+1;f[nr2J].x:=l;
f[nr2J].y:=lc;
a[l,lc]:=-3;END;
if a[l,lc]=-2 then if t=true then begin t:=false;finl:=l;finlc:=lc;end;
if a[l,lc]=-2 then begin if finl=l then if finlc>lc then finlc:=lc;
                         if finl>l then begin finl:=l;finlc:=lc;end;

end;
end;
for i:=1 to nr2j do begin
c[i].x:=f[i].x;
c[i].y:=f[i].y;end;nrj:=nr2j;
until t=false;
write(g,finl,' ',finlc,' ',k);
close(ff);close(g);end.