• Source
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. int r, c;
    5. char chair[51][51];
    6. int Xxq[]={0, -1, -1, -1, 0, 1, 1, 1};
    7. int Yxq[]={-1, -1, 0, 1, 1, 1, 0, -1};
    8.  
    9. int dd[51][51];
    10. void khoitao ()
    11. {
    12. for (int i=1; i<=r; i++)
    13. for (int j=1; j<=c; j++)
    14. dd[i][j]=0;
    15. }
    16.  
    17. int demBT ()
    18. {
    19. int dem=0;
    20. for (int i=1; i<=r; i++)
    21. {
    22. for (int j=1; j<=c; j++)
    23. {
    24. if (chair[i][j]=='o' && dd[i][j]==0)
    25. {
    26. dd[i][j]=1;
    27. for (int k=0; k<8; k++)
    28. {
    29. int xx=j+Xxq[k];
    30. int yy=i+Yxq[k];
    31. if (1<=xx && xx<=c && 1<=yy && yy<=r && chair[yy][xx]=='o' && dd[yy][xx]==0) dem++;
    32. }
    33. }
    34. }
    35. }
    36. return dem;
    37. }
    38.  
    39. int main ()
    40. {
    41. int hvChair=0;
    42. int sl_SV=0;
    43. cin>>r>>c;
    44. for (int i=1; i<=r; i++)
    45. for (int j=1; j<=c; j++)
    46. {
    47. cin>>chair[i][j];
    48. if (chair[i][j]=='.') hvChair=1;
    49. if (chair[i][j]=='o') sl_SV++;
    50. }
    51. khoitao ();
    52. if (sl_SV==0)
    53. {
    54. cout<<"0";
    55. }
    56. else if (hvChair==0)
    57. {
    58. cout<<demBT();
    59. }
    60. else
    61. {
    62. int demM=0;
    63. int vth;
    64. int vtc;
    65. for (int i=1; i<=r; i++)
    66. {
    67. for (int j=1; j<=c; j++)
    68. {
    69. if (chair[i][j]=='.')
    70. {
    71. int dem=0;
    72. for (int k=0; k<8; k++)
    73. {
    74. int xx=j+Xxq[k];
    75. int yy=i+Yxq[k];
    76. if (1<=xx && xx<=c && 1<=yy && yy<=r && chair[yy][xx]=='o') dem++;
    77. }
    78. if (dem>demM)
    79. {
    80. demM=dem;
    81. vth=i;
    82. vtc=j;
    83. }
    84. }
    85. }
    86. }
    87. chair[vth][vtc]='o';
    88. cout<<demBT();
    89. }
    90. return 0;
    91. }