Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stack>
- #include <bitset>
- using namespace std;
- ifstream fin("ceva.in");
- ofstream fout("ceva.out");
- int mat[101][101];
- bitset < 101 > viz[101];
- stack < pair < int, int > > stk;
- int di[] = {+1, -1, +0, +0};
- int dj[] = {+0, +0, +1, -1};
- int N;
- /// 1 - ZID
- /// 0 - CAMERA
- int Fill(int i, int j)
- {
- for(int i = 1; i <= N; i++)
- viz[i].reset();
- stk.push(make_pair(i, j));
- viz[i][j] = 1;
- int S = 0;
- while(!stk.empty())
- {
- S++;
- i = stk.top().first;
- j = stk.top().second;
- stk.pop();
- for(int k = 0; k < 4; k++)
- {
- int nexti = i + di[k];
- int nextj = j + dj[k];
- if(!viz[nexti][nextj] && mat[nexti][nextj] == 0)
- {
- viz[nexti][nextj] = 1;
- stk.push(make_pair(nexti, nextj));
- }
- }
- }
- return S;
- }
- void Gard()
- {
- for(int i = 0; i <= N + 1; i++)
- mat[i][0] = mat[i][N + 1] = mat[0][i] = mat[N + 1][i] = -1;
- }
- int main()
- {
- fin >> N;
- for(int i = 1; i <= N; i++)
- for(int j = 1; j <= N; j++)
- fin >> mat[i][j];
- Gard();
- int I, J, maxim = 0;
- for(int i = 1; i <= N; i++)
- {
- for(int j = 1; j <= N; j++)
- {
- if(mat[i][j] == 1)
- {
- int a = Fill(i, j);
- if(a > maxim)
- {
- maxim = a;
- I = i;
- J = j;
- }
- }
- }
- }
- fout << maxim << ' ' << I << ' ' << J;
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement