Pagini recente » Cod sursa (job #1494625) | Cod sursa (job #458579) | Cod sursa (job #1254888) | Cod sursa (job #2383169) | Cod sursa (job #84058)
Cod sursa(job #84058)
#include <stdio.h>
#define lMax 23000
long n,m,i,j,k,c,a[151][151];
long p,q,x[lMax],y[lMax],xx,yy;
long dx[]={0,-1,0,1,0};
long dy[]={0,0,1,0,-1};
bool v[151][151],f[151][151],chei[lMax];
int main(){
freopen ("castel.in","r",stdin);
freopen ("castel.out","w",stdout);
scanf ("%ld %ld %ld",&n,&m,&p);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
scanf ("%ld",&a[i][j]);
}
}
chei[p]=1;
x[1]=p/m;
y[1]=p%m;
if (!y[1])y[1]=m;
else x[1]++;
p=1;
q=1;
while (p<=q){
for (k=1;k<=4;k++){
xx=x[p]+dx[k];
yy=y[p]+dy[k];
if (1<=xx&&xx<=n&&1<=yy&&yy<=m)
if (!v[xx][yy])
if (chei[a[xx][yy]]){
v[xx][yy]=1;
chei[(xx-1)*m+yy]=1;
q++;
x[q]=xx;
y[q]=yy;
for (i=1;i<=4;i++)
if (!v[xx+dx[i]][yy+dy[i]])
f[xx+dx[i]][yy+dy[i]]=1;
}
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (f[i][j])
if (chei[a[i][j]]){
v[i][j]=1;
f[i][j]=0;
chei[(i-1)*m+j]=1;
q++;
x[q]=i;
y[q]=j;
for (k=1;k<=4;k++)
if (!v[i+dx[k]][j+dy[k]])
f[i+dx[k]][j+dy[k]]=1;
}
p++;
}
c=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (v[i][j])c++;
printf("%ld\n",c);
return 0;
}