Cod sursa(job #3328285)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 7 decembrie 2025 16:11:32
Problema Kdrum Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[55][55];
int di[]={-1,0,0,1},dj[]={0,-1,1,0},i1,iv,jv;
int n,m,x1,x2,z1,z2,ok,v1,k,i,j,v;
map<int, int> M[55][55];
struct p{
    int i,j,v;
};
int main()
{
    fin >> n >> m >> k >> x1 >> z1 >> x2 >> z2;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
            fin >> x[i][j];

        queue <p> q;

        q.push({x1,z1,x[x1][z1]});
        M[x1][z1][x[x1][z1]]=1;

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

            for(i1=0 ; i1<4 ; i1++)
            {
                iv=i+di[i1];
                jv=j+dj[i1];
                v1=__gcd(k,v*x[iv][jv]);

                if( M[iv][jv][v1]==0 && x[iv][jv]!=0 && iv<=n && jv<=m && iv>=1 && jv>=1)
                {
                    M[iv][jv][v1]=M[i][j][v]+1;
                    if(i==x2 && j==z2 && v1==k)
                        ok=1;
                    q.push({iv,jv,v1});
                }
            }
            q.pop();
        }
        fout << M[x2][z2][k];
    return 0;
}