fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // your code goes here
  6. long long int table[1000][1000],prow[1000][1000],pcol[1000][1000],i,j,k,l,m,n,o,p,q,r,s,t;
  7. cin>>m>>n;
  8. for(i=0;i<m;i++)
  9. {
  10. for(j=0;j<n;j++)
  11. {
  12. cin>>table[i][j];
  13. }
  14. }
  15. for(i=0;i<m;i++)
  16. {
  17. prow[i][n-1]=n;
  18. }
  19. for(i=0;i<n;i++)
  20. {
  21. pcol[m-1][i]=m;
  22. }
  23. for(i=0;i<m;i++)
  24. {
  25. long long int last_col=n;
  26. for(j=n-1;j>=0;j--)
  27. {
  28. if(table[i][j]==0)
  29. {
  30. prow[i][j]=j;
  31. last_col=j;
  32. }
  33. else
  34. {
  35. prow[i][j]=last_col;
  36. }
  37. }
  38. }
  39.  
  40.  
  41. for(j=0;j<n;j++)
  42. {
  43. long long int last_col=m;
  44. for(i=m-1;i>=0;i--)
  45. {
  46. if(table[i][j]==0)
  47. {
  48. pcol[i][j]=i;
  49. last_col=i;
  50. }
  51. else
  52. {
  53. pcol[i][j]=last_col;
  54. }
  55. }
  56. }
  57. /* for(i=0;i<m;i++)
  58. {
  59. for(j=0;j<n;j++)
  60. {
  61. cout<<prow[i][j]<<" ";
  62. }
  63. cout<<endl;
  64. }
  65. for(i=0;i<m;i++)
  66. {
  67. for(j=0;j<n;j++)
  68. {
  69. cout<<pcol[i][j]<<" ";
  70. }
  71. cout<<endl;
  72. }*/
  73. long long int x_max=-111000;
  74. for(i=0;i<m;i++)
  75. {
  76. j=0;
  77.  
  78.  
  79. while(j<n)
  80. {
  81. if(table[i][j]==0)
  82. {
  83. j++;
  84. continue;
  85. }
  86. l=prow[i][j];
  87. long long int x_min=1000000;
  88. for(k=j;k<l;k++)
  89. {
  90. o=pcol[i][k];
  91. x_min=min(o-i,x_min);
  92. }
  93. x_min=min(x_min,l-j);
  94. x_max=max(x_min,x_max);
  95. j++;
  96. }
  97.  
  98. }
  99. if(x_max!=-111000)
  100. cout<<x_max<<endl;
  101. else
  102. cout<<0<<endl;
  103. return 0;
  104. }
Success #stdin #stdout 0s 4368KB
stdin
Standard input is empty
stdout
0