Pagini recente » Cod sursa (job #2774857) | Cod sursa (job #1273139) | Cod sursa (job #2451680) | Cod sursa (job #180660) | Cod sursa (job #1152926)
#include <cstdio>
using namespace std;
int x[159][159],y[160][160],z[160][160],chei[30000],cam[30000],cam2[30000];
int main()
{
int n,m,k,op,nr,i,j,sum,li,ci;
FILE *f=fopen("castel.in","r");
FILE *g=fopen("castel.out","w");
fscanf(f,"%d%d%d",&n,&m,&k);
for(i=1; i<=n; ++i)
for(j=1; j<=m; ++j)
{
fscanf(f,"%d",&x[i][j]);
}
li=(k-1)/m+1;
ci=(k-1)%m+1;
for(i=1; i<=n; ++i)
for(j=1; j<=m; ++j)
z[i][j]=(i-1)*m+j;
int k1[4]= {0,0,1,-1},k2[4]= {-1,1,0,0},nchei,ncam;
for(i=1; i<=n; ++i)
x[i][0]=x[i][m+1]=-1;
for(i=1; i<=m; ++i)
x[0][i]=x[n+1][i]=-1;
nchei=1;
chei[1]=x[li][ci];
y[li][ci]=1;
int ok=0;
ncam=0;
int kap;
for(kap=0; kap<=3; ++kap)
if(x[li+k1[kap]][ci+k2[kap]]!=-1&&y[li+k1[kap]][ci+k2[kap]]!=1)
{
++ncam;
cam[ncam]=li+k1[kap];
cam2[ncam]=ci+k2[kap];
y[cam[ncam]][cam2[ncam]]=1;
}
while(ok==0)
{
ok=1;
for(i=1; i<=nchei; ++i)
{
for(j=1; j<=ncam; ++j)
{
if(chei[i]==x[cam[j]][cam2[j]]&&cam[j]!=0)
{
ok=0;
++nchei;
chei[nchei]=(cam[j]-1)*n+cam2[j]-1;
for(kap=0; kap<=3; ++kap)
{
if(x[cam[j]+k1[kap]][cam2[j]+k2[kap]]!=-1&&y[cam[j]+k1[kap]][cam2[j]+k2[kap]]!=1)
{
++ncam;
cam[ncam]=cam[j]+k1[kap];
cam2[ncam]=cam2[j]+k2[kap];
y[cam[ncam]][cam2[ncam]]=1;
}
}
cam[j]=0;
}
}
}
}
fprintf(g,"%d\n",nchei);
fclose(g);
return 0;
}