Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){int m, n;cin >> m >> n;vector<vector<int>> matrix(m + 1, vector<int>(n + 1));vector<vector<int>> sum(m + 1, vector<int>(n + 1, 0));for (int i = 1; i <= m; ++i)for (int j = 1; j <= n; ++j)cin >> matrix[i][j];for (int i = 1; i <= m; ++i)for (int j = 1; j <= n; ++j)sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + matrix[i][j];int ans = 0;for (int i = 1; i <= m; ++i)for (int j = 1; j <= n; ++j)if (matrix[i][j]) {for (int k = ans + 1; k + i - 1 <= m && k + j - 1 <= n; ++k) {if (sum[k + i - 1][k + j - 1] - sum[i - 1][k + j - 1] - sum[k + i - 1][j - 1] + sum[i - 1][j - 1] == k * k)ans = k;}}cout << ans * ans << endl;return 0;}