Pagini recente » Cod sursa (job #3253282) | Cod sursa (job #2503161) | Cod sursa (job #400682) | Cod sursa (job #2408452) | Cod sursa (job #2110075)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int a[52][52];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int x2,k,y2,drummin=200,n,m;
void solve(int x,int y,long long int P,int drum)
{
if(drum<=drummin)
{
int xu,yu;
for(int i=0;i<=3;i++)
{
xu=x+dx[i];yu=y+dy[i];
if(a[xu][yu]!=0&&xu<=n&&yu<=m&&xu>0&&yu>0)
{
P%=k;
P*=a[xu][yu]%k;
if(xu==x2&&yu==y2&&P%k==0)
{
if(drum<drummin)
drummin=drum;
i=4;
}
else
solve(xu,yu,P,drum+1);
}
}
}
}
int main()
{
int x1,y1;
f>>n>>m>>k;
f>>x1>>y1>>x2>>y2;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
f>>a[i][j];
}
f.close();
if(x1==x2&&y1==y2)
g<<"1";
else
{solve(x1,y1,1,1);
g<<drummin+1;}
g.close();
return 0;
}