Cod sursa(job #254415)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 7 februarie 2009 12:01:14
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.77 kb
#include <stdio.h>

int A[51][51],x,y,k,min=-1,n,m;
char ok[51][51];

void lee(int a,int b,int nr,int val)
{
ok[a][b]=1;
if (a==x && b==y) if (val%k==0) if (min==-1 || min>nr) min = nr;
                  else;         else;
else
{
if (a>1) if (!ok[a-1][b]) lee(a-1,b,nr+1,(A[a-1][b]%k)*val);
if (a<n) if (!ok[a+1][b]) lee(a+1,b,nr+1,(A[a+1][b]%k)*val);
if (b>1) if (!ok[a][b-1]) lee(a,b-1,nr+1,(A[a][b-1]%k)*val);
if (b<m) if (!ok[a][b+1]) lee(a,b+1,nr+1,(A[a][b+1]%k)*val);
}
ok[a][b]=0;
}

int main()
{
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);

int i,j,x1,y1;

scanf("%d%d%d",&n,&m,&k);
scanf("%d%d%d%d",&x1,&y1,&x,&y);

for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&A[i][j]);

lee(x1,y1,1,A[x1][y1]%k);
printf("%d",min);
}