Pagini recente » Cod sursa (job #991272) | Cod sursa (job #1125262) | Cod sursa (job #2281873) | Cod sursa (job #748528) | Cod sursa (job #1152916)
#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;
fprintf(g,"%d %d\n",chei[nchei],x[cam[j]][cam2[j]]);
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,"\n");
for(i=1;i<=n;++i)
{for(j=1;j<=m;++j)
fprintf(g,"%d ",y[i][j]);
fprintf(g,"\n");}
fprintf(g,"%d\n",nchei);
fclose(g);
return 0;
}