Advertisement
Adam_mz_

Untitled

Feb 13th, 2022
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5. #include <fstream>
  6.  
  7.  
  8. size_t maxZeroRectangle(size_t rows, size_t columns)
  9. {
  10.  
  11.     std::string key;
  12.     std::vector<std::vector<int>> field;
  13.  
  14.     std::getline(std::cin, key);
  15.     for (size_t i = 0; rows > i; ++i)
  16.     {
  17.         std::getline(std::cin, key);
  18.         std::vector<int> vector;
  19.  
  20.         vector.reserve(key.size());
  21.         for (int j = 0; j < key.size(); ++j)
  22.         {
  23.             vector.push_back((key[j] - 47) % 2);
  24.         }
  25.         field.push_back(vector);
  26.         vector.clear();
  27.  
  28.  
  29.     }
  30.     int result = -1;
  31.     for (size_t i = 0; i < rows; ++i)
  32.     {
  33.         for (size_t j = 0; j < columns; ++j)
  34.         {
  35.             if (!field[i][j] || i == 0)
  36.                 continue;
  37.             field[i][j] += field[i - 1][j];
  38.         }
  39.  
  40.  
  41.         int x = 0, y = 0, temp = 0;
  42.  
  43.         int m = *std::max_element(field[i].begin(), field[i].end());
  44.         for (int j = 1; j <= m; ++j)
  45.         {
  46.  
  47.             for (size_t k : field[i])
  48.             {
  49.                 if (j > k)
  50.                 {
  51.                     x = std::max(x, y);
  52.                     y = 0;
  53.                 } else
  54.                 {
  55.                     if (k == 0)
  56.                     {
  57.                         x = std::max(x, y);
  58.                         y = 0;
  59.                     } else
  60.                         y++;
  61.                 }
  62.  
  63.             }
  64.             x = std::max(x, y);
  65.             temp = (int) (std::max(temp, j * x));
  66.             x = 0;
  67.             y = 0;
  68.         }
  69.  
  70.         result = std::max(temp, result);
  71.     }
  72.  
  73.     return result;
  74. }
  75.  
  76.  
  77. int main()
  78. {
  79.     size_t height, width;
  80.     std::cin >> height >> width;
  81.  
  82.  
  83.     std::cout << maxZeroRectangle(height, width);
  84.  
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement