Cod sursa(job #568227)

Utilizator bogfodorBogdan Fodor bogfodor Data 30 martie 2011 22:28:24
Problema Castel Scor 0
Compilator cpp Status done
Runda brasov_7_jr Marime 1.19 kb
// copyright Smeu si Teo, pentru ca pb asta m-a omorat de cand am citit-o prima data:)

#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;
  for(int p=0,u=1;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++;
          }
      }
  }
  printf("%d\n",cnt+1);
}

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