Cod sursa(job #3240644)

Utilizator Luca529Taschina Luca Luca529 Data 19 august 2024 09:36:59
Problema Kdrum Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[55][55], di[]={-1, 0, 0, 1}, dj[]={0, -1, 1, 0};
map<int, int> M[55][55];

struct Data{
int i, j, v;
};

int main()
{   int n, m, k, a, b, c, d, ok=0, v1;
    fin>>n>>m>>k>>a>>b>>c>>d;

    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    fin>>x[i][j];

    queue<Data> q;
    q.push({a, b, x[a][b]});
    M[a][b][x[a][b]]=1;

    while(q.empty()!=1 && !ok)
    {int i=q.front().i, j=q.front().j, v=q.front().v;

     for(int g=0;g<4;g++)
     {int iv=i+di[g], jv=j+dj[g];

      v1=__gcd(k, v*x[iv][jv]);
      if(iv>0 && jv>0 && iv<=n && jv<=m && x[iv][jv]!=0 && M[iv][jv][v1]==0)
      {M[iv][jv][v1]=M[i][j][v]+1;

       if(i==c && j==d && v1==k)ok=1;
       q.push({iv, jv, v1});
      }
     }

     q.pop();
    }

    fout<<M[c][d][k];
    return 0;
}