Pagini recente » Cod sursa (job #2096885) | Cod sursa (job #2137427) | Cod sursa (job #1344441) | Cod sursa (job #2900628) | Cod sursa (job #254531)
Cod sursa(job #254531)
#include<fstream.h>
int a[60][60],b[60][60],i,j,n,m,k,p,K,ok=1,t;
int dx[5]={0,0,-1,0,1};
int dy[5]={0,-1,0,1,0};
struct sir {int x,y;} s[2510],pozi,pozf;
int main()
{
ifstream f("kdrum.in");
ofstream g("kdrum.out");
f>>n>>m>>K;
f>>pozi.x>>pozi.y>>pozf.x>>pozf.y;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{f>>a[i][j];
if(!a[i][j]) b[i][j]=-1;
a[i][j]=a[i][j]%K;
}
for(i=0;i<=n+1;i++) { b[i][0]=-1; b[i][m+1]=-1;}
for(i=0;i<=m+1;i++) { b[0][i]=-1; b[n+1][i]=-1;}
k=1; p=0; s[1]=pozi; b[pozi.x][pozi.y]=1;
while(p!=k&&ok)
{ p++;
for(t=1;t<=4;t++)
if(!b[s[p].x+dx[t]][s[p].y+dy[t]])
{ k++;
s[k].x=s[p].x+dx[t];
s[k].y=s[p].y+dy[t];
b[s[k].x][s[k].y]=b[s[p].x][s[p].y]+1;
a[s[k].x][s[k].y]*=a[s[p].x][s[p].y];
if(s[k].x==pozf.x&&s[k].y==pozf.y) {ok=0; break;}
}
}
if(a[pozf.x][pozf.y]%K==0) g<<b[pozf.x][pozf.y];
else g<<"16";
f.close();
g.close();
return 0;
}