#include #include int n, m, a[500][500]; bool valid_pos(int i, int j) { return (i >= 0) && (i < n) && (j >= 0) && (j < m); } int lmax_u(int i, int j) { int max = 0; for (int d = 1; d+j < m; d++) { if (a[i][d+j] == 0) break; if (a[i][d+j] > 1) { max = std::max(max, a[i][j]+a[i][d+j]+d-1); } } return max; } int max_u() { int maxu = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] > 1) { maxu = std::max(maxu, lmax_u(i, j)); } } } return maxu; } int main() { std::cin >> n >> m; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { char v; std::cin >> v; if (v == '1') { if (valid_pos(i-1, j)) { a[i][j] = a[i-1][j] + 1; } else { a[i][j] = 1; } } else { a[i][j] = 0; } } } std::cout << max_u(); return 0; }