• Source
    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4.  
    5. int N;
    6. char banco[31][31];
    7. char tg[4];
    8.  
    9. int isOutside (int i, int j)
    10. {
    11. if (i<1 || N<i) return 1;
    12. if (j<1 || N<j) return 1;
    13. return 0;
    14. }
    15.  
    16. int kt (char dk)
    17. {
    18. for (int i=1; i<=3; i++)
    19. {
    20. if (tg[1]==tg[2] && tg[2]==tg[3] && tg[3]==dk) return 1;
    21. }
    22. return 0;
    23. }
    24.  
    25. int layngang (int i, int j, char dk)
    26. {
    27. int iNext = i;
    28. int jNext = j+2;
    29. if (isOutside (iNext, jNext)==1) return 0;
    30. else
    31. {
    32. tg[1]=banco[i][j];
    33. tg[2]=banco[i][j+1];
    34. tg[3]=banco[i][j+2];
    35. if (kt(dk)==1) return 1;
    36. }
    37. return 0;
    38. }
    39.  
    40. int laydoc (int i, int j, char dk)
    41. {
    42. int iNext = i+2;
    43. int jNext = j;
    44. if (isOutside (iNext, jNext)==1) return 0;
    45. else
    46. {
    47. tg[1]=banco[i][j];
    48. tg[2]=banco[i+1][j];
    49. tg[3]=banco[i+2][j];
    50. if (kt(dk)==1) return 1;
    51. }
    52. return 0;
    53. }
    54.  
    55. int laycheo1 (int i, int j, char dk)
    56. {
    57. int iNext = i+2;
    58. int jNext = j+2;
    59. if (isOutside (iNext, jNext)==1) return 0;
    60. else
    61. {
    62. tg[1]=banco[i][j];
    63. tg[2]=banco[i+1][j+1];
    64. tg[3]=banco[i+2][j+2];
    65. if (kt(dk)==1) return 1;
    66. }
    67. return 0;
    68. }
    69.  
    70. int laycheo2 (int i, int j, char dk)
    71. {
    72. int iNext = i+2;
    73. int jNext = j-2;
    74. if (isOutside (iNext, jNext)==1) return 0;
    75. else
    76. {
    77. tg[1]=banco[i][j];
    78. tg[2]=banco[i+1][j-1];
    79. tg[3]=banco[i+2][j-2];
    80. if (kt(dk)==1) return 1;
    81. }
    82. return 0;
    83. }
    84.  
    85. int main ()
    86. {
    87. //IN;
    88. cin>>N;
    89. string xau;
    90. for (int i=1; i<=N; i++)
    91. {
    92. cin>>xau;
    93. for (int j=1; j<=N; j++)
    94. {
    95. banco[i][j]=xau[j-1];
    96. }
    97. }
    98. for (int i=1; i<=N; i++)
    99. {
    100. for (int j=1; j<=N; j++)
    101. {
    102. if (banco[i][j]!='.')
    103. {
    104. char DK=banco[i][j];
    105. if (layngang (i, j, DK)!=0 || laydoc (i, j, DK)!=0 || laycheo1 (i, j, DK)!=0 || laycheo2 (i, j, DK)!=0)
    106. {
    107. cout<<DK;
    108. return 0;
    109. }
    110. }
    111. }
    112. }
    113. cout<<"ongoing";
    114. return 0;
    115. }