• 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 test,row,col,n,i,j,k,koyta,mn,ans;
    12.  
    13. int a,b,x,y;
    14.  
    15. scanf("%d",&test);
    16.  
    17. while(test--)
    18. {
    19. scanf("%d",&row);
    20.  
    21. col = row;
    22.  
    23. scanf("%d",&n);
    24.  
    25. memset(cum_sum,0,sizeof(cum_sum));
    26.  
    27. memset(grid,-1,sizeof grid);
    28.  
    29. if(n==0)
    30. {
    31. printf("%d\n",row*col);
    32.  
    33. continue;
    34. }
    35.  
    36. for(i=1;i<=n;i++)
    37. {
    38. scanf("%d%d%d%d",&a,&b,&x,&y);
    39.  
    40. for(j=a;j<=x;j++)
    41. {
    42. for(k=b;k<=y;k++)
    43. {
    44. grid[j][k] = 0;
    45. }
    46. }
    47. }
    48.  
    49. for(i=1; i<=row; i++)
    50. {
    51. for(j=1; j<=col; j++)
    52. {
    53. if(grid[i][j]==-1)
    54. {
    55. grid[i][j] = 1;
    56. }
    57. }
    58. }
    59.  
    60. ans = 0;
    61.  
    62. for(i=1; i<=row; i++)
    63. {
    64. for(j=1; j<=col; j++)
    65. {
    66. if(grid[i][j]==1)
    67. {
    68. cum_sum[j]+=grid[i][j];
    69. }
    70. else
    71. {
    72. cum_sum[j] = 0;
    73. }
    74. }
    75.  
    76. for(j=1; j<=col; j++)
    77. {
    78. koyta = mn = 0;
    79.  
    80. if(cum_sum[j]==0)
    81. {
    82. koyta = 0;
    83. }
    84. else
    85. {
    86. mn = cum_sum[j];
    87.  
    88. for(k=j; k<=col; k++)
    89. {
    90. if(cum_sum[k]==0)
    91. break;
    92.  
    93. mn = min(mn,cum_sum[k]);
    94.  
    95. koyta++;
    96.  
    97. ans = max(ans,(mn*koyta));
    98. }
    99.  
    100. ans = max(ans,(mn*koyta));
    101. }
    102.  
    103. ans = max(ans,(mn*koyta));
    104. }
    105. }
    106.  
    107. printf("%d\n",ans);
    108. }
    109.  
    110. return 0;
    111. }