Pagini recente » Cod sursa (job #2908224) | Cod sursa (job #1865663) | Cod sursa (job #2584834) | Cod sursa (job #2245275) | Cod sursa (job #465582)
Cod sursa(job #465582)
#include<stdio.h>
long a[51][51];
long l[51][51];
long r[51][51];
long dx[]={0,-1,0,1,0};
long dy[]={0,0,1,0,-1};
struct KDRUM
{
long x,y;
};
KDRUM q[100001];
int main()
{
long i,j,n,m,k,x1,x2,y1,y2,p,u,xn,yn,rest;
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);
scanf("%ld%ld%ld%ld%ld%ld%ld",&n,&m,&k,&x1,&y1,&x2,&y2);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
scanf("%ld",&a[i][j]);
l[i][j]=2000000000;
r[i][j]=-100000;
}
p=u=1;
q[1].x=x1;
q[1].y=y1;
l[x1][y1]=1;
r[x1][y1]=a[x1][y1]%k;
while (p<=u)
{
for (i=1;i<=4;i++)
{
xn=q[p].x+dx[i];
yn=q[p].y+dy[i];
rest=(r[ q[p]. x ] [ q[p].y ]*a[xn][yn])%k;
if (rest>r[xn][yn])
{
r[xn][yn]=rest;
l[xn][yn]=l [q[p].x][q[p].y]+1;
q[++u].x=xn;
q[u].y=yn;
}
if (rest==r[xn][yn])
{
if (l[q[p].x][q[p].y]+1<l[xn][yn])
{
r[xn][yn]=rest;
l[xn][yn]=l [q[p].x][q[p].y]+1;
q[++u].x=xn;
q[u].y=yn;
}
}
}
p++;
}
printf("%ld\n",l[x2][y2]);
return 0;
}