Cod sursa(job #254389)

Utilizator 630r63Ilinca George Mihai 630r63 Data 7 februarie 2009 11:49:22
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.89 kb
#include<fstream>
using namespace std;
#define N 100001
ifstream f("kdrum.in");
ofstream g("kdrum.out");
unsigned long int a[50][50],x1,y1,x2,y2;
int n,m,k,i,j,p;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};

void citire()
{
    f>>n>>m>>k;
    f>>x1>>y1>>x2>>y2;
    for(i=1;i<=n;i++) for(j=1;j<=m;j++) f>>a[i][j];
    f.close();
}

void bord()
{
     for (i=0;i<=n+1;i++) a[i][0]=a[i][m+1]=1;
     for (i=0;i<=m+1;i++) a[0][i]=a[n+1][i]=1;
}

void cauta(int x, int y)
{
     a[x][y]=2;
     if(x==x2 && y==y2){p=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(a[i][j]==2) p++;}     
              for(int dir=1;dir<=4;dir++)              
                      if(!a[x+dx[dir]][y+dy[dir]]) cauta(x+dx[dir], y+dy[dir]);
     else p++;
     a[x][y]=0;     
}
         
int main()
{
    citire();
    bord();
    cauta(x1,y1);
    g<<p;
    g.close();
    return 0;
}