Pagini recente » Cod sursa (job #683021) | Cod sursa (job #2268996) | Cod sursa (job #530293) | Cod sursa (job #199211) | Cod sursa (job #54270)
Cod sursa(job #54270)
#include <stdio.h>
int a[152][152],x[12501][2],y[12501][2],cheie[12501],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]);}
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 (a[x[i][p]][y[i][p]]!=0 ) 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 (a[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];
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);}