• Source
    1. #include<bits/stdc++.h>
    2.  
    3. using namespace std;
    4.  
    5. int cum_sum[105];
    6.  
    7. int grid[105][105];
    8.  
    9. int main()
    10. {
    11. int row,col,i,j,k,koyta,mn,ans;
    12.  
    13. while(scanf("%d%d",&row,&col)==2)
    14. {
    15. if(row==0 && col==0)
    16. {
    17. break;
    18. }
    19.  
    20. for(i=0; i<row; i++)
    21. {
    22. for(j=0; j<col; j++)
    23. {
    24. scanf("%d",&grid[i][j]);
    25.  
    26. if(grid[i][j]==0)
    27. {
    28. grid[i][j] = 1;
    29. }
    30. else
    31. {
    32. grid[i][j] = 0;
    33. }
    34. }
    35. }
    36.  
    37. ans = 0;
    38.  
    39. for(i=0; i<row; i++)
    40. {
    41. for(j=0; j<col; j++)
    42. {
    43. if(grid[i][j]==1)
    44. {
    45. cum_sum[j]+=grid[i][j];
    46. }
    47. else
    48. {
    49. cum_sum[j] = 0;
    50. }
    51. }
    52.  
    53. for(j=0; j<col; j++)
    54. {
    55. koyta = mn = 0;
    56.  
    57. if(cum_sum[j]==0)
    58. {
    59. koyta = 0;
    60. }
    61. else
    62. {
    63. mn = cum_sum[j];
    64.  
    65. for(k=j; k<col; k++)
    66. {
    67. if(cum_sum[k]==0)
    68. break;
    69.  
    70. mn = min(mn,cum_sum[k]);
    71.  
    72. koyta++;
    73.  
    74. ans = max(ans,(mn*koyta));
    75. }
    76.  
    77. ans = max(ans,(mn*koyta));
    78. }
    79.  
    80. ans = max(ans,(mn*koyta));
    81. }
    82. }
    83.  
    84. printf("%d\n",ans);
    85.  
    86. memset(cum_sum,0,sizeof(cum_sum));
    87. }
    88.  
    89. return 0;
    90. }