Pagini recente » Profil Vladyy | Istoria paginii utilizator/andrei22116 | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #54278)
Cod sursa(job #54278)
#include <stdio.h>
int a[152][152],b[152][152],x[22501][2],y[22501][2],cheie[22501],n,i,j,k,l,c,m,p,ok,q,nr1,nr2,mi;
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
FILE *f,*g;
int main()
{
f=fopen("castel.in","r");
g=fopen("castel.out","w");
fscanf(f,"%d %d %d",&m,&n,&k);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{fscanf(f,"%d",&a[i][j]);b[i][j]=1;
}
c=k % n;
if (c==0) {
c=n;
l=k / n;
}
else l=k / n +1;
ok=0;
cheie[k]=1;
nr1=1;
x[1][1]=l;
y[1][1]=c;
p=1;
q=0;mi=0;
while (ok!=1)
{
ok=1;
nr2=0;
for (i=1;i<=nr1;i++)
if (cheie[a[x[i][p]][y[i][p]]]==1)
{++mi;
cheie[(x[i][p]-1)*n+y[i][p]]=1;
a[x[i][p]][y[i][p]]=0;
for (j=0;j<4;j++)
if (b[x[i][p]+dx[j]][y[i][p]+dy[j]]!=0)
{++nr2;
x[nr2][q]=x[i][p]+dx[j];
y[nr2][q]=y[i][p]+dy[j];
b[x[nr2][q]][y[nr2][q]]=0;
ok=0;
}
}
else
{++nr2;
x[nr2][q]=x[i][p];
y[nr2][q]=y[i][p];
}
nr1=nr1^nr2;
nr2=nr2^nr1;
nr1=nr1^nr2;
p=p^q;
q=q^p;
p=p^q;
}
fprintf(g,"%d",mi);
fclose(f);
fclose(g);
return (0);}