Pagini recente » Cod sursa (job #933368) | Cod sursa (job #1944437) | Cod sursa (job #879134) | Cod sursa (job #2362242) | Cod sursa (job #57200)
Cod sursa(job #57200)
#include <cstdio>
FILE *in = fopen("castel.in","r"), *out = fopen("castel.out","w");
int m, n, k;
int a[152][152] = {{0}};
void read()
{
fscanf(in, "%d %d %d", &m, &n, &k);
for ( int i = 1; i <= m; ++i )
for ( int j = 1; j <= n; ++j )
fscanf(in, "%d", &a[i][j]);
}
struct coada
{
int x, y;
};
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
int lee(int x, int y)
{
coada b[23104];
int p = 0, u = 0;
b[p].x = x;
b[p].y = y;
int cnt = 1;
int chei[23104] = {0};
int viz[152][152] = {{0}};
chei[k] = 1;
viz[k/m+1][k%n] = 1;
while ( p <= u )
{
for ( int i = 0; i < 4; ++i )
{
int X = b[p].x + dx[i];
int Y = b[p].y + dy[i];
if ( !viz[X][Y] && chei[a[X][Y]] == 1 )
{
++u;
b[u].x = X;
b[u].y = Y;
++cnt;
chei[n*X-(n-Y)] = 1;
viz[X][Y] = 1;
}
}
++p;
}
// for ( int i = 0; i <= 25; ++i )
// printf("%d ", chei[i]);
// printf("\n");
return cnt;
}
int main()
{
read();
// for ( int i = 1; i <= m; ++i )
// {
// for ( int j = 1; j <= n; ++j )
// printf("%d ", a[i][j]);
// printf("\n");
// }
fprintf(out, "%d\n", lee(k/m+1, k%n));
return 0;
}