Cod sursa(job #133796)

Utilizator vladnVlad Nistorica vladn Data 9 februarie 2008 19:26:09
Problema Rj Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.04 kb
const dx:array[1..8] of integer=(0,1,1,1,0,-1,-1,-1);
      dy:array[1..8] of integer=(1,1,0,-1,-1,-1,0,1);
var a:array[1..201,1..201] of char;
    b:array[1..201,1..201] of longint;
    r:array[1..40002,1..2] of longint;
    j:array[1..40002,1..2] of longint;
    f,g:text;
    n,m,i,k,dr,str,stj,xx,yy,p,q:longint;
begin
assign(f,'rj.in');reset(f);
assign(g,'rj.out');rewrite(g);
readln(f,n,m);i:=0;
while not eof(f) do begin
    inc(i);k:=0;
    while not eoln(f) do begin
        inc(k);
        read(f,a[i,k]);
        if a[i,k]='X' then b[i,k]:=-1 else
           if a[i,k]='R' then begin r[1,1]:=i;r[1,2]:=k;b[i,k]:=1;end
              else if a[i,k]='J' then begin j[1,1]:=i;j[1,2]:=k;b[i,k]:=1; end;
    end;
    readln(f);
end;
stj:=1;dr:=1;str:=1;
while (dr<=stj) and (dr<=str) do begin
      xx:=r[dr,1];yy:=r[dr,2];
      for i:=1 to 8 do
          if (xx+dx[i]<=n) and (xx+dx[i]>=1) and (yy+dy[i]<=m)
             and (yy+dy[i]>=1) then
             if b[xx+dx[i],yy+dy[i]]=0 then begin
                b[xx+dx[i],yy+dy[i]]:=b[xx,yy]+1;
                inc(str);
                r[str,1]:=xx+dx[i];r[str,2]:=yy+dy[i];
                a[xx+dx[i],yy+dy[i]]:='R';
          end else if (b[xx+dx[i],yy+dy[i]]=b[xx,yy]+1)
              and (a[xx+dx[i],yy+dy[i]]='J') then  begin
              p:=xx+dx[i];
              q:=yy+dy[i];
              break
          end;
      xx:=j[dr,1];yy:=j[dr,2];
      for i:=1 to 8 do
          if (xx+dx[i]<=n) and (xx+dx[i]>=1) and (yy+dy[i]<=m)
             and (yy+dy[i]>=1) then
             if b[xx+dx[i],yy+dy[i]]=0 then begin
                b[xx+dx[i],yy+dy[i]]:=b[xx,yy]+1;
                inc(stj);
                j[stj,1]:=xx+dx[i];j[stj,2]:=yy+dy[i];
                a[xx+dx[i],yy+dy[i]]:='J';
          end else if (b[xx+dx[i],yy+dy[i]]=b[xx,yy]+1)
              and (a[xx+dx[i],yy+dy[i]]='R') then  begin
              p:=xx+dx[i];
              q:=yy+dy[i];
              break
          end;
      inc(dr);
end;
writeln(g,b[p,q],' ',p,' ',q);
close(g);
end.