// RandomUsername (Nikola Jovanovic) // Contest Name // Problem Name #include #define DBG false #define debug(x) if(DBG) printf("(ln %d) %s = %d\n", __LINE__, #x, x); #define lld long long #define ff(i,a,b) for(int i=a; i<=b; i++) #define fb(i,a,b) for(int i=a; i>=b; i--) #define par pair #define fi first #define se second #define mid (l+r)/2 #define INF 1000000000 #define MAXN 505 using namespace std; int n, m; int a[MAXN][MAXN]; int U[MAXN][MAXN]; int curr, best; char s[MAXN]; int main() { scanf("%d %d", &n, &m); ff(i, 1, n) { scanf("%s", s); ff(j, 1, m) { a[i][j] = s[j-1] - '0'; if(a[i][j] == 1) U[i][j] = U[i-1][j] + 1; } } ff(i, 1, n) { int j = 1; while(j <= m) { if(a[i][j] == 0) {j++; continue;} if(a[i][j] == 1) { // start series if(U[i][j] == 1) curr = 0; else curr = U[i][j]; j++; while(j <= m) { if(a[i][j] == 0) break; if(U[i][j] >= 1) { if(curr > 0) best = max(best, U[i][j] + curr); } if(curr > 0) curr++; if(U[i][j] >= 1 && U[i][j] > curr) curr = U[i][j]; j++; } } } } printf("%d\n", best); return 0; }