Cod sursa(job #568328)

Utilizator bogfodorBogdan Fodor bogfodor Data 31 martie 2011 08:34:48
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <cstdio>
#define qmax = 22801;

using namespace std;

int n,m,k,a[155][155],xp,yp,v[22801];
int d[155][155];

const int di[4]={-1,1,0,0};
const int dj[4]={0,0,-1,1};

struct coada
{
    int x;
    int y;
}q[22801];

void citire()
{
    int cnt=1;
    scanf("%d %d %d", &m, &n, &k);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++){
            scanf("%d ", &a[i][j]);
            d[i][j]=cnt++;
        }
}

void lee()
{
  int cnt=0;
  q[0].x=xp;
  q[0].y=yp;
  if(q[0].y==0)
  {
      q[0].y=n;
      q[0].x--;
  }
  v[k]=1;
  int ok=1,u=1;
  while(ok)
  {
      ok=0;
      for(int p=0;p<u;p++)
      {
          for(int w=0;w<4;w++)
          {
              int vi=q[p].x+di[w];
              int vj=q[p].y+dj[w];
              if(a[vi][vj]!=0 && v[a[vi][vj]]==1)
              {
                  q[u].x=vi;
                  q[u++].y=vj;
                  v[d[vi][vj]]=1;
                  a[vi][vj]=0;
                  cnt++;
                  ok=1;
              }
          }
      }
  }
  printf("%d\n",cnt);
}

int main()
{
    freopen("castel.in","r",stdin);
    freopen("castel.out","w",stdout);
    citire();
    xp=k/n+1;
    yp=k%n;
    lee();
    return 0;
}