Cod sursa(job #2110075)

Utilizator PaduraruCristianPaduraru Cristian Daniel PaduraruCristian Data 20 ianuarie 2018 12:20:50
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");

int a[52][52];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int x2,k,y2,drummin=200,n,m;
void solve(int x,int y,long long int P,int drum)
{
    if(drum<=drummin)
    {
        int xu,yu;
        for(int i=0;i<=3;i++)
        {
            xu=x+dx[i];yu=y+dy[i];
            if(a[xu][yu]!=0&&xu<=n&&yu<=m&&xu>0&&yu>0)
            {
                P%=k;
                P*=a[xu][yu]%k;
                if(xu==x2&&yu==y2&&P%k==0)
                {
                    if(drum<drummin)
                        drummin=drum;
                    i=4;
                }
                else
                    solve(xu,yu,P,drum+1);
            }
        }
    }
}



int main()
{
    int x1,y1;
    f>>n>>m>>k;
    f>>x1>>y1>>x2>>y2;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            f>>a[i][j];
    }
    f.close();
    if(x1==x2&&y1==y2)
        g<<"1";
    else
        {solve(x1,y1,1,1);
        g<<drummin+1;}
    g.close();
    return 0;
}