Advertisement
kokokozhina

614

Jan 4th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int n = 10;
  8. vector<string> matrix;
  9.  
  10. bool corner(int i, int j)
  11. {
  12.     if ((j + 1 < n) && (i + 1 < n) && matrix[i][j] == 'X' && matrix[i][j + 1] == 'X' && matrix[i + 1][j] == 'X')
  13.         return false;
  14.     if ((j - 1 > -1) && (i + 1 < n) && matrix[i][j - 1] == 'X' && matrix[i][j] == 'X' && matrix[i + 1][j] == 'X')
  15.         return false;
  16.     if ((j - 1 > -1) && (i - 1 > -1) && matrix[i][j - 1] == 'X' && matrix[i][j] == 'X' && matrix[i - 1][j] == 'X')
  17.         return false;
  18.     if ((j + 1 < n) && (i - 1 > -1) && matrix[i][j + 1] == 'X' && matrix[i][j] == 'X' && matrix[i - 1][j] == 'X')
  19.         return false;
  20.     return true;
  21. }
  22.  
  23. bool zone(int i, int j)
  24. {
  25.     if ((i + 1 < n) && (j - 1 > -1) && matrix[i + 1][j - 1] == 'X' && matrix[i][j] == 'X')
  26.         return false;
  27.     if ((i + 1 < n) && (j + 1 < n) && matrix[i + 1][j + 1] == 'X' && matrix[i][j] == 'X')
  28.         return false;
  29.     return true;
  30. }
  31.  
  32. int height(int i, int j)
  33. {
  34.     int result = 0;
  35.     if(matrix[i][j] == 'X' && (j + 1 >= n || matrix[i][j + 1] == '.'))
  36.     {
  37.         while(i < n && matrix[i][j] == 'X')
  38.         {
  39.             result++;
  40.             matrix[i][j] = '.';
  41.             i++;
  42.         }
  43.     }
  44.  
  45.     return result;
  46. }
  47.  
  48. int width(int i, int j)
  49. {
  50.     int result = 0;
  51.     if(matrix[i][j] == 'X' && (i + 1 >= n || matrix[i + 1][j] == '.'))
  52.     {
  53.         while(j < n && matrix[i][j] == 'X')
  54.         {
  55.             result++;
  56.             matrix[i][j] = '.';
  57.             j++;
  58.         }
  59.     }
  60.  
  61.     return result;
  62. }
  63.  
  64.  
  65. int main()
  66. {
  67.    
  68.     string s;
  69.     for(int i = 0; i < n; i++)
  70.     {
  71.         cin >> s;
  72.         matrix.push_back(s);
  73.     }
  74.  
  75.     int stage[11] = {0};
  76.     for(int i = 0; i < n; i++)
  77.         for(int j = 0; j < n; j++)
  78.         {
  79.             if (corner(i, j) == 0 || zone(i, j) == 0)
  80.             {
  81.                 cout << "NO\n";
  82.                 return 0;
  83.             }
  84.             int current = max(height(i, j), width(i, j));
  85.             stage[current]++;
  86.         }
  87.    
  88.     if(stage[1] == 4 && stage[2] == 3 && stage[3] == 2 && stage[4] == 1 && stage[5] == 0 && stage[6] == 0 && stage[7] == 0 && stage[8] == 0 && stage[9] == 0 && stage[10] == 0)
  89.         cout << "YES\n";
  90.     else
  91.         cout << "NO\n";
  92.  
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement