#include <iostream> #include <fstream> using namespace std; ifstream f("data.in"); int n,m,ma[505][505],maxi,viz[505][505]; void up(int i,int j,int dis,int dis2,int dis3) { viz[i][j]=1; if(ma[i-1][j]==1) up(i-1,j,dis,dis2,dis3+1); if(maxi<dis+dis2+dis3) maxi=dis+dis2+dis3; /*{ int x,y; y=j; for(x=i;x<=x+dis3;x++) viz[x][y]=1; while(y>=y-dis2) { y--; viz[x][y]=1; } while(x>=x-dis) { x--; viz[x][y]=1; } }*/ } void right(int i,int j,int dis,int dis2) { viz[i][j]=1; if(ma[i][j+1]==1) right(i,j+1,dis,dis2+1); if(ma[i-1][j]==1 /*&& dis2!=1*/) up(i-1,j,dis,dis2,1); } void down(int i,int j,int dis) { viz[i][j]=1; if(ma[i+1][j]==1) down(i+1,j,dis+1); if(ma[i][j+1]==1 && dis!=1) right(i,j+1,dis,1); } int main() { maxi=0; string aux; cin>>n>>m; int i,j; for(i=1;i<=n;i++) { cin>>aux; for(j=m;j>0;j--) { ma[i][j]=(int)aux[j-1]-48; //aux=aux/10; //cout<<ma[i][j]<<" "; }//cout<<"\n"; } for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(ma[i][j]==1 && viz[i][j]==0) down(i,j,1); cout<<maxi; }