Cod sursa(job #1807503)

Utilizator robertispasIspas Robert robertispas Data 16 noiembrie 2016 17:47:07
Problema Lista lui Andrei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("homm.in");
ofstream out("homm.out");

const int N = 102;
int mat[N][N], d[N][N][21];
int n, m, k, x1, y1, x2, y2;

bool c(int i, int j, int k)
{
    if(j > 0 && i > 0 && i <= m && j <= n) return true;
    return false;
}

int main()
{
    int i, j, rez=0, l;
    in>>m>>n>>k;
    for(i = 1; i <= m; i++)
        for(j = 1; j <= n; j++)
            in>>mat[i][j];
    in>>x1>>y1>>x2>>y2;
    d[x1][y1][0] = 1;
    for(l = 1; l <= k; l++)
        for(i = 1; i <= m; i++)
            for(j = 1; j <= n; j++)
            {
            if(mat[i][j] == 0){
                if(c(i, j-1, l)) d[i][j][l] += d[i][j-1][l-1];
                if(c(i, j+1, l)) d[i][j][l] += d[i][j+1][l-1];
                if(c(i+1, j, l)) d[i][j][l] += d[i+1][j][l-1];
                if(c(i-1, j, l)) d[i][j][l] += d[i-1][j][l-1];
            }
            }
    for(i = 0; i <= k; i++)
        rez += d[x2][y2][i];
    out<<rez;
    return 0;
}