#include #include using namespace std; #define DIM 505 int JosSus[DIM][DIM], SusJos[DIM][DIM], StDr[DIM][DIM]; char Mat[DIM][DIM]; int main() { #ifndef ONLINE_JUDGE freopen("input.txt","r",stdin); #endif // ONLINE_JUDGE int N, M; cin >> N >> M; for(int i = 1; i <= N; ++i) { cin >> (Mat[i] + 1); } for(int i = N; i > 0; --i) { for(int j = 1; j <= M; ++j) { if(Mat[i][j] == '1') { JosSus[i][j] += JosSus[i + 1][j] + 1; } } } for(int i = 1; i <= N; ++i) { for(int j = 1; j <= M; ++j) { if(Mat[i][j] == '1') { SusJos[i][j] += SusJos[i - 1][j] + 1; } } } for(int j = M; j > 0; --j) { for(int i = 1; i <= N; ++i) { if(Mat[i][j] == '1') { StDr[i][j] += StDr[i][j + 1] + 1; } } } int bst = 0; for(int i = 1; i <= N; ++i) { for(int j = 1; j <= M; ++j) { int x = i, y = j; int ans = 0; if(JosSus[x][y] > 1) { ans += JosSus[x][y]; x += JosSus[x][y] - 1; } else { continue; } if(StDr[x][y] > 1) { ans += StDr[x][y] - 1; y += StDr[x][y] - 1; } else { continue; } if(SusJos[x][y] > 1) { ans += SusJos[x][y] - 1; } else { continue; } bst = max(bst, ans); } } cout << bst << '\n'; return 0; }