Cod sursa(job #3328277)

Utilizator davidutz_420David Alex davidutz_420 Data 7 decembrie 2025 15:54:03
Problema Kdrum Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[51][51], n, m, k, a, b, c, d, i, j, v, g, ok, v1, iv, jv, di[]={-1, 0, 0, 1}, dj[]={0, -1, 1, 0};
map<int, int> p[51][51];
struct yole
{
    int i, j, v;
};
int main()
{
    fin>>n>>m>>k>>a>>b>>c>>d;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            fin>>x[i][j];
    queue<yole> q;
    q.push({a, b, x[a][b]});
    p[a][b][x[a][b]]=1;
    while(q.empty()!=1&&!ok)
    {
        i=q.front().i;
        j=q.front().j;
        v=q.front().v;
        for(g=0;g<4;g++)
        {
            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&&p[iv][jv][v1]==0)
            {
                p[iv][jv][v1]=p[i][j][v]+1;
                if(i==c&&j==d&&v1==k)
                    ok=1;
                q.push({iv, jv, v1});
            }
        }
        q.pop();
    }
    fout << p[c][d][k];
    return 0;
}