Cod sursa(job #81554)

Utilizator alex23alexandru andronache alex23 Data 2 septembrie 2007 22:12:07
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>

int a[151][151],b[151][151],v[22802],n,m,x,y,i,j,s,k;


int main()
{FILE *fin,*fout;

 fin=fopen("castel.in","r");
 fscanf(fin,"%d %d %d",&m,&n,&k);
 for (i=1;i<=m;i++)
    for (j=1;j<=n;j++)
       fscanf(fin,"%d",&a[i][j]);
 fclose(fin);


 if (k%n==0) {y=n;x=k/n;}
        else {y=k%n;x=k/n+1;}
 b[x][y]=1;
 v[k]=1;
 s=1;x=0;
 while (x==0)
 {x=1;
 for (i=1;i<=m;i++)
    for (j=1;j<=n;j++)
       if (b[i][j]==1)
             {if ((i>1)&&(v[a[i-1][j]]==1)&&(b[i-1][j]==0)) {b[i-1][j]=1;s++;v[(i-2)*n+j]=1;x=0;}
              if ((i<n)&&(v[a[i+1][j]]==1)&&(b[i+1][j]==0)) {b[i+1][j]=1;s++;v[i*n+j]=1;x=0;}
              if ((j>1)&&(v[a[i][j-1]]==1)&&(b[i][j-1]==0)) {b[i][j-1]=1;s++;v[(i-1)*n+j-1]=1;x=0;}
              if ((j<m)&&(v[a[i][j+1]]==1)&&(b[i][j+1]==0)) {b[i][j+1]=1;s++;v[(i-1)*n+j+1]=1;x=0;}
              }
 }
 fout=fopen("castel.out","w");
 fprintf(fout,"%d",s);
 fclose(fout);

 return 0;
}