Cod sursa(job #254749)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 7 februarie 2009 13:57:48
Problema Kdrum Scor 0
Compilator fpc Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.89 kb
const vx:array[1..4] of longint=(0,0,1,-1);
      vy:array[1..4] of longint=(1,-1,0,0);

var fol:array[0..50,0..50,0..12000] of boolean;
    a:array[0..51,0..51] of longint;
    f,g:text;
    n,m,j,k,x1,x2,y1,y2,i,min:longint;

procedure rec(x1,y1,pas,r:longint);
 var i:longint;
 begin
  r:=(r*a[x1,y1]) mod k;
  if (x1=x2) and (y1=y2) and (r=0) then begin
   if min>pas then
    min:=pas;
   exit;
  end;
  if a[x1,y1]<>0 then begin
   if fol[x1,y1,r]=false then begin
    fol[x1,y1,r]:=true;
    for i:=1 to 4 do
     if pas+1<min then
      rec(x1+vx[i],y1+vy[i],pas+1,r);
    fol[x1,y1,r]:=false;
   end;
  end;
 end;

begin
 assign(f,'kdrum.in'); reset(f);
 assign(g,'kdrum.out'); rewrite(g);
 read(f,n,m,k);
 min:=maxlongint;
 read(f,x1,y1,x2,y2);
 for i:=1 to n do
  for j:=1 to m do
   read(f,a[i,j]);
 rec(x1,y1,1,1);
 writeln(g,min);
 close(f); close(g);
end.