Pagini recente » Cod sursa (job #2745649) | Cod sursa (job #1860973) | Cod sursa (job #1486889) | Cod sursa (job #1019760) | Cod sursa (job #1659325)
#include <fstream>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int a[51][51],n,m,k,x1,y1,x2,y2,d[1001],p,u,b[51][51];
int dl[8]={-1,0,1,0};
int dc[8]={0,-1,0,1};
struct element{
int l,c,nr;}c[2501];
void cit(){
fin>>n>>m>>k;
fin>>x1>>y1>>x2>>y2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
fin>>a[i][j];}
int sub(int i,int j,int y){
int m;
if(i>j)
return 0;
m=(i+j)/2;
if(d[m]==y)
return m;
if(y<d[m])
return sub(i,m-1,y);
return sub(m+1,j,y);}
void afis(){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<'\n';}}
void Lee(){
int in,jn,dn,i,j,d,k;
p=u=1;
c[u].l=x1;
c[u].c=y1;
c[u].nr=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=-1;
b[x1][y1]=0;
while(p<=u){
i=c[p].l;
j=c[p].c;
d=c[p].nr;
for(k=0;k<4;k++){
in=i+dl[k];
jn=j+dc[k];
dn=d+1;
if(in>0&&jn>0&&in<n+1&&jn<m+1&&b[in][jn]==-1&&a[in][jn]==1){
u++;
c[u].l=in;
c[u].c=jn;
c[u].nr=dn;
b[in][jn]=dn;}}
p++;}}
int main(){
cit();
int i,l=1,j;
for(i=1;i<=k;i++)
if(k%i==0){
d[l]=i;
l++;}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(sub(1,l,a[i][j])!=0)
a[i][j]=1;
else
a[i][j]=0;
Lee();
fout<<b[x2][y2]+1;
return 0;}