fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. // Kiểm tra hình vuông kích thước size tại vị trí (x, y)
  8. bool isSquare(const vector<vector<int>>& mat, int x, int y, int size, int value) {
  9. for (int i = x; i < x + size; ++i) {
  10. for (int j = y; j < y + size; ++j) {
  11. if (mat[i][j] != value) return false;
  12. }
  13. }
  14. return true;
  15. }
  16.  
  17. int main() {
  18. int m, n;
  19. cin >> m >> n;
  20.  
  21. vector<vector<int>> mat(m, vector<int>(n));
  22.  
  23. // Nhập ma trận
  24. for (int i = 0; i < m; ++i) {
  25. for (int j = 0; j < n; ++j) {
  26. cin >> mat[i][j];
  27. }
  28. }
  29.  
  30. int maxSize = 0;
  31.  
  32. // Kiểm tra từng ô (brute force)
  33. for (int i = 0; i < m; ++i) {
  34. for (int j = 0; j < n; ++j) {
  35. for (int size = 1; i + size <= m && j + size <= n; ++size) {
  36. if (isSquare(mat, i, j, size, mat[i][j])) {
  37. maxSize = max(maxSize, size);
  38. } else {
  39. break;
  40. }
  41. }
  42. }
  43. }
  44.  
  45. cout << maxSize * maxSize << endl;
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5284KB
stdin
4 5
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
stdout
4