Cod sursa(job #254436)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 7 februarie 2009 12:06:48
Problema Kdrum Scor 20
Compilator fpc Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.21 kb
type pelem=^elem;
     elem=record
          x,y:byte;
          pas:integer;
          prod:longint;
          urm:pelem;
          end;
const lin:array[1..4]of shortint=(1,-1,0,0);
      col:array[1..4]of shortint=(0,0,1,-1);
var v:array[1..51,1..51]of boolean;
    p,r,q:pelem;
    f,g:text;
    x1,y1,x2,y2,xnou,ynou,n,m:byte;
    j,k,i,u:integer;
begin
assign(f,'kdrum.in');reset(f);
assign(g,'kdrum.out');rewrite(g);
readln(f,n,m,k);
read(f,x1,y1,x2,y2);
for i:=1 to n do begin
    for j:=1 to m do begin
                read(f,xnou);
                if xnou=0 then v[i,j]:=true;
                end;
    readln(f);
    end;
new(p);
p^.x:=x1;p^.y:=y1;p^.pas:=1;p^.urm:=nil;r:=p;
while v[x2,y2]=false do begin
      for i:=1 to 4 do begin
          xnou:=p^.x+lin[i];
          ynou:=p^.y+col[i];
          if (xnou in[1..n])and(ynou in[1..m])and(v[xnou,ynou]=false) then begin
                   new(q);q^.urm:=nil;
                   q^.x:=xnou;
                   q^.y:=ynou;
                   q^.pas:=p^.pas+1;u:=q^.pas;
                   r^.urm:=q;r:=r^.urm;
                   v[xnou,ynou]:=true;
                   end;end;
            p:=p^.urm;
end;
write(g,u);
close(g);
end.