Pagini recente » Cod sursa (job #1340103) | Cod sursa (job #1753046) | Cod sursa (job #1012855) | Cod sursa (job #2960500) | Cod sursa (job #2812567)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
const int N = 156;
const int ox[] = {0, 1, 0, -1};
const int oy[] = {1, 0, -1, 0};
queue <pair<int, int>> q;
int n, m, k, i, j, z, coord, l, c, ln, cn, rez;
bool used[N][N];
int a[N][N], b[N][N], frecv[N * N], fr[N * N];
bool inside(int a, int b)
{
if(a <= n && a >= 1 && b <= m && b >= 1) return true;
return false;
}
int main()
{
fin >> n >> m >> k;
frecv[k]++;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
{
fin >> a[i][j];
z++;
b[i][j] = z;
if(z == k) used[i][j] = true, q.push(make_pair(i, j));
}
while(q.empty() == 0)
{
pair<int, int> coord = q.front();
l = coord.first;
c = coord.second;
for(i = 0; i < 4; i++)
{
ln = l + ox[i];
cn = c + oy[i];
if(frecv[a[ln][cn]]) frecv[b[ln][cn]]++;
if(inside(ln, cn) && frecv[a[ln][cn]] && fr[b[ln][cn]] <= 5)
{
fr[b[ln][cn]]++;
q.push(make_pair(ln, cn));
used[ln][cn] = true;
}
}
q.pop();
}
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++) rez += used[i][j];
fout << rez;
return 0;
}