Pagini recente » Cod sursa (job #2833533) | Cod sursa (job #1007255) | Cod sursa (job #202125) | Istoria paginii info-oltenia-2018/echipe/clasament/7-8 | Cod sursa (job #81878)
Cod sursa(job #81878)
#include <stdio.h>
#define infile "castel.in"
#define outfile "castel.out"
#define nmax 151
int v[nmax][nmax], n, m, j, k, cx[nmax*nmax], cy[nmax*nmax], dx[4]={-1,0,1,0}, dy[4]={0,1,0,-1};
short chei[nmax*nmax], c[nmax][nmax];
long u, i;
void readdata();
void solve();
void writedata();
int inside(int,int);
int new_k(int,int);
int main()
{
readdata();
solve();
writedata();
return 0;
}
void readdata()
{
freopen(infile, "r", stdin);
scanf("%d %d %d\n", &n, &m, &k);
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
scanf("%d ", &v[i][j]);
fclose(stdin);
}
void writedata()
{
freopen(outfile, "w", stdout);
printf("%ld\n", u);
fclose(stdout);
}
void solve()
{
int u2=1, x, y;
cx[1]=k/m;
cy[1]=k%m;
if (!cy[1]) cy[1]=m;
else cx[1]++;
chei[k]=1;
c[cx[1]][cy[1]]=1;
while (u2)
{
u+=u2;
u2=0;
for (i=1; i<=u; i++)
{
x=cx[i];
y=cy[i];
for (int l=0; l<4; l++)
if (inside(x+dx[l],y+dy[l]) && !c[x+dx[l]][y+dy[l]] && chei[v[x+dx[l]][y+dy[l]]])
{
u2++;
cx[u+u2]=x+dx[l];
cy[u+u2]=y+dy[l];
c[x+dx[l]][y+dy[l]]=1;
chei[new_k(x+dx[l],y+dy[l])]=1;
}
}
}
}
int inside(int x, int y)
{
if (x<1 || x>n) return 0;
if (y<1 || y>m) return 0;
return 1;
}
int new_k(int x, int y)
{
return (x-1)*m+y;
}