Cod sursa(job #254531)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 7 februarie 2009 12:45:12
Problema Kdrum Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.99 kb
#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;
}