Pagini recente » Cod sursa (job #959414) | Cod sursa (job #2973012) | Cod sursa (job #1968797) | Cod sursa (job #618419) | Cod sursa (job #128221)
Cod sursa(job #128221)
#include <stdio.h>
//using namespace std;
int a[155][155],n,m,k,mat[155][155];
int x[155*155],y[155*155];
int sir[155*155];
long nr=1;
const int l[5]={-1,0,0,1};
const int c[5]={0,-1,1,0};
void citire ()
{
freopen ("castel.in","r",stdin);
scanf ("%d%d%d",&n,&m,&k);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
scanf ("%d",&a[i][j]);
fclose(stdin);
}
void umple ()
{
long num=1;
for (int ii=1;ii<=n;ii++)
for (int jj=1;jj<=m;jj++)
mat[ii][jj]=num++;
for (int i=0;i<n+1;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
for (int j=0;j<m+2;j++)
{
a[0][j]=-1;
a[n+1][j]=-1;
}
}
void parcurgere ()
{
if (k%m==0)
{
x[0]=k/m;
y[0]=m;
sir[a[x[0]][y[0]]]=1;
a[x[0]][y[0]]=-1;
}
else
{
x[0]=k/m+1;
y[0]=k%m;
sir[a[x[0]][y[0]]]=1;
a[x[0]][y[0]]=-1;
}
int ok=1;
while (ok){
ok=0;
for (int i=0;i<nr;i++)
for (int k=0;k<4;k++)
if (a[x[i]+l[k]] [y[i] +c[k]]!=-1)
if (sir[a[x[i]+l[k]] [y[i]+c[k]]]==1)
{
x[nr]=x[i]+l[k];
y[nr]=y[i]+c[k];
sir[mat[x[nr]][y[nr]]]=1;
a[x[nr]][y[nr]]=-1;
nr++;
ok=1;
}
}
}
int main ()
{
citire ();
umple();
parcurgere();
freopen ("castel.out","w",stdout);
printf ("%d\n",nr);
fclose (stdout);
return 0;
}