Pagini recente » Cod sursa (job #2111128) | Cod sursa (job #154124) | Cod sursa (job #3234508) | Cod sursa (job #338039) | Cod sursa (job #1803995)
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
ifstream in("castel.in");
ofstream out("castel.out");
const int nMax = 155;
const int mMax = 155;
int n, m, k;
int a[nMax * mMax];
set<int> acc;
bool key[nMax * mMax];
bool viz[nMax * mMax];
void citire()
{
in >> n >> m >> k;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
in >> a[m * (i - 1) + j];
}
void found_key(int x)
{
key[x] = true;
if(x % m != 1)
acc.insert(x - 1);
if(x % m != 0)
acc.insert(x + 1);
if(x > m)
acc.insert(x - m);
if(x + m <= n * m)
acc.insert(x + m);
}
void rezolvare()
{
found_key(k);
for(auto it = acc.begin(); it != acc.end(); ++it)
{
if(key[a[*it]] && key[*it] == false)
{
found_key(*it);
it = acc.begin();
}
}
}
void afisare()
{
int rasp = 0;
for(int i = 1; i <= n*m; ++i)
{
if(key[i])
{
++rasp;
}
}
out << rasp << endl;
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}