Cod sursa(job #2074409)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 24 noiembrie 2017 16:19:56
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>

using namespace std;
ifstream f ("kdrum.in");
ofstream g ("kdrum.out");
struct coada
{
    int l,c,rest;
};
coada q[2502];
int n,m,i,a[52][52],j,k,b[52][52],xi,yi,xf,yf,xx,yy,p,u,x,y,nr,z;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int main()
{
    f>>n>>m>>k>>xi>>yi>>xf>>yf;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=m;j++)
        {
            f>>a[i][j];
        }
    }
    b[xi][yi]=1;
    q[1].l=xi;
    q[1].c=yi;
    q[1].rest=a[xi][yi]%k;
    p=u=1;
    while (p<=u)
    {
        x=q[p].l;
        y=q[p].c;
        for (i=0;i<4;i++)
        {
            xx=x+dx[i];
            yy=y+dy[i];
            if (xx==xf && yy==yf && (q[p].rest*a[xx][yy])%k==0)
            {
                nr=b[x][y]+1;
                z=1;
                break;
            }
            else if (a[xx][yy]!=0)
            {
                u++;
                b[xx][yy]=b[x][y]+1;
                q[u].l=xx;
                q[u].c=yy;
                q[u].rest=(q[p].rest*a[xx][yy])%k;
            }
        }
        p++;
        if (z==1) break;
    }
    g<<nr<<'\n';
    return 0;
}