Cod sursa(job #1122460)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 25 februarie 2014 18:16:11
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.38 kb
#include <cstdio>
using namespace std;
FILE *f=fopen("castel.in","r");
FILE *g=fopen("castel.out","w");

int n,m,k,v[152][152],chei[151*151],d[152][152],lin[50000],col[50000];
int main()
{int i,j,l,c,p,u,uu;bool ok;
fscanf(f,"%d %d %d",&n,&m,&k);
for (i=1;i<=n;i++) for (j=1;j<=m;j++) fscanf(f,"%d",&v[i][j]);

chei[k]=1;
l=k/m;
c=k%m;
if (c==0) c=m;
     else l++;
d[l][c]=1;

p=1;u=1;uu=1;
lin[1]=l;col[1]=c;
do
{ok=false;
p=1;
while (p<=u) {
              for (i=p;i<=u;i++) {l=lin[i];c=col[i];
                                  if (d[l-1][c]==0&&chei[v[l-1][c]]==1) {d[l-1][c]=1;
                                                                         chei[(l-2)*m+c]=1;
                                                                         uu++;
                                                                         lin[uu]=l-1;col[uu]=c;ok=true;
                                                                         }
                                  if (d[l+1][c]==0&&chei[v[l+1][c]]==1) {d[l+1][c]=1;
                                                                         chei[l*m+c]=1;
                                                                         uu++;
                                                                         lin[uu]=l+1;col[uu]=c;ok=true;
                                                                         }
                                  if (d[l][c-1]==0&&chei[v[l][c-1]]==1) {d[l][c-1]=1;
                                                                         chei[(l-1)*m+c-1]=1;
                                                                         uu++;
                                                                         lin[uu]=l;col[uu]=c-1;ok=true;
                                                                         }
                                  if (d[l][c+1]==0&&chei[v[l][c+1]]==1) {d[l][c+1]=1;
                                                                         chei[(l-1)*m+c+1]=1;
                                                                         uu++;
                                                                         lin[uu]=l;col[uu]=c+1;ok=true;
                                                                         }
                                  }
              p=u+1;
              u=uu;
              }

}while (ok==true);
fprintf(g,"%d",u);
return 0;
}