Cod sursa(job #2067703)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 16 noiembrie 2017 19:25:20
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int n, m, k, xi, yi, xf, yf;
int a[52][52], coada[75002][4], dx[]= {-1,0,1,0}, dy[]= {0,1,0,-1};
void lee()
{
    int i, x, y, xx, yy, p, u;
    p=u=1;
    coada[1][0]=xi;
    coada[1][1]=yi;
    coada[1][2]=a[xi][yi];
    coada[1][3]=1;
    while(p<=u)
    {
        x=coada[p][0];
        y=coada[p][1];
        for(i=0; i<=3; i++)
        {
            xx=x+dx[i];
            yy=y+dy[i];
            if(1<=xx&&xx<=n&&1<=yy&&yy<=m&&a[xx][yy]!=-1)
            {
                u++;
                coada[u][0]=xx;
                coada[u][1]=yy;
                coada[u][2]=coada[p][2]*a[xx][yy];
                coada[u][2]%=k;
                coada[u][3]=coada[p][3]+1;
                if(xx==xf && yy==yf)
                    if(coada[u][2]==0)
                    {
                        fout<<coada[u][3]<<'\n';
                        return;
                    }
            }
        }
        p++;
    }
}
int main()
{
    int i, j;
    fin>>n>>m>>k>>xi>>yi>>xf>>yf;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        {
            fin>>a[i][j];
            if(a[i][j]==0)
                a[i][j]=-1;
        }
    lee();
    return 0;
}