Cod sursa(job #291578)

Utilizator stefynr8Space Monkey stefynr8 Data 30 martie 2009 00:50:07
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <stdio.h>
#define NMAX 200
int n,m,k,i,j,h,x,y,p,u,la,ca,lv,cv;
int a[NMAX][NMAX], v[NMAX][NMAX];
char dx[4]={-1, 0, 1, 0};
char dy[4]={0, 1, 0, -1};

int main()
{

  unsigned char c[31000][2];
  
  freopen("castel.in","r",stdin);
  freopen("castel.out","w",stdout);


  scanf("%d %d %d", &m, &n, &k);

  for (i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	 {
      scanf("%d", &v[i][j]);
	  if(v[i][j]==1) a[i][j]=0;
	           else a[i][j]=-1; 
	}

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

  p=1; u=1;
  x=k/n+1;
  y=k%n;
  if(y==0){
           x--;
           y=n;
           } 
  
  c[1][0]=x;
  c[1][1]=y;
  a[x][y]=1;
  
  while (p<=u)
	{
	 la=c[p][0];
	 ca=c[p][1];
	 for (i=0;i<4;i++)
		{
		 lv=la+dx[i];
		 cv=ca+dy[i];

		 if(a[lv][cv]==0){
				          u++;
				          c[u][0]=lv;
				          c[u][1]=cv;
				          a[lv][cv]=1;
				          
				          x=(lv-1)*n+cv;
		                  for (h=1;h<=m;h++)
	                          for(j=1;j<=n;j++)
	                              if(v[h][j]==x) a[h][j]=0;
                           
                           p=1;
                         }				  

		}
	 p++;
	 }
	
   for (i=0;i<=m+1;i++)
       {for(j=0;j<=n+1;j++)
            printf("%d ", a[i][j]);
        printf("\n");
        }    
  printf("%d", p-1);
  return 0;

}