Advertisement
PedalaVasile

AIA CU PERETI

Feb 13th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stack>
  4. #include <bitset>
  5.  
  6. using namespace std;
  7.  
  8. ifstream fin("ceva.in");
  9. ofstream fout("ceva.out");
  10.  
  11. int mat[101][101];
  12. bitset < 101 > viz[101];
  13. stack < pair < int, int > > stk;
  14.  
  15. int di[] = {+1, -1, +0, +0};
  16. int dj[] = {+0, +0, +1, -1};
  17.  
  18. int N;
  19.  
  20. /// 1 - ZID
  21. /// 0 - CAMERA
  22.  
  23. int Fill(int i, int j)
  24. {
  25.     for(int i = 1; i <= N; i++)
  26.         viz[i].reset();
  27.  
  28.     stk.push(make_pair(i, j));
  29.  
  30.     viz[i][j] = 1;
  31.  
  32.     int S = 0;
  33.  
  34.     while(!stk.empty())
  35.     {
  36.         S++;
  37.  
  38.         i = stk.top().first;
  39.         j = stk.top().second;
  40.  
  41.         stk.pop();
  42.  
  43.         for(int k = 0; k < 4; k++)
  44.         {
  45.             int nexti = i + di[k];
  46.             int nextj = j + dj[k];
  47.  
  48.             if(!viz[nexti][nextj] && mat[nexti][nextj] == 0)
  49.             {
  50.                 viz[nexti][nextj] = 1;
  51.                 stk.push(make_pair(nexti, nextj));
  52.             }
  53.         }
  54.     }
  55.  
  56.     return S;
  57. }
  58.  
  59. void Gard()
  60. {
  61.     for(int i = 0; i <= N + 1; i++)
  62.         mat[i][0] = mat[i][N + 1] = mat[0][i] = mat[N + 1][i] = -1;
  63. }
  64.  
  65. int main()
  66. {
  67.     fin >> N;
  68.  
  69.     for(int i = 1; i <= N; i++)
  70.         for(int j = 1; j <= N; j++)
  71.             fin >> mat[i][j];
  72.  
  73.  
  74.     Gard();
  75.  
  76.     int I, J, maxim = 0;
  77.  
  78.     for(int i = 1; i <= N; i++)
  79.     {
  80.         for(int j = 1; j <= N; j++)
  81.         {
  82.             if(mat[i][j] == 1)
  83.             {
  84.                 int a = Fill(i, j);
  85.  
  86.                 if(a > maxim)
  87.                 {
  88.                     maxim = a;
  89.                     I = i;
  90.                     J = j;
  91.                 }
  92.             }
  93.         }
  94.     }
  95.  
  96.     fout << maxim << ' ' << I << ' ' << J;
  97.  
  98.     fin.close();
  99.     fout.close();
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement