fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. std::ios::sync_with_stdio(false);
  6. cin.tie(NULL);
  7. int t,n,x,r,c,ld,rd,flag,k,l;
  8. scanf("%d",&t);
  9. while(t--)
  10. {
  11. scanf("%d%d",&n,&x);
  12. char b[n][n];
  13. for(int i=0;i<n;i++){
  14. scanf("%s",&b[i]);
  15. }
  16.  
  17. flag=0;
  18. for(int i=0;i<n;i++){
  19. for(int j=0;j<n;j++){
  20. if((x==1)&&(b[i][j]=='.')){
  21. flag=1;
  22. break;
  23. }
  24. if(b[i][j]=='.'){
  25.  
  26. //check row
  27. r=1,c=1,ld=1,rd=1;
  28. for(k=i-1;k>=0;k--){
  29. if(b[k][j]=='X')
  30. r++;
  31. else
  32. k=-1;
  33. }
  34. for(k=i+1;k<n;k++){
  35. if(b[k][j]=='X')
  36. r++;
  37. else
  38. k=n;
  39. }
  40.  
  41. //check column
  42. for(k=j-1;k>=0;k--){
  43. if(b[i][k]=='X')
  44. c++;
  45. else
  46. k=-1;
  47. }
  48. for(k=j+1;k<n;k++){
  49. if(b[i][k]=='X')
  50. c++;
  51. else
  52. k=n;
  53. }
  54.  
  55. //check left-diagnol
  56. for(k=i-1,l=j-1;k>=0&&l>=0;k--,l--){
  57. if(b[k][l]=='X')
  58. ld++;
  59. else
  60. k=-1;
  61. }
  62. for(k=i+1,l=j+1;k<n&&l<n;k++,l++){
  63. if(b[k][l]=='X')
  64. ld++;
  65. else
  66. k=n;
  67. }
  68.  
  69. //check right-diagnol
  70. for(k=i-1,l=j+1;k>=0&&l<n;k--,l++){
  71. if(b[k][l]=='X')
  72. rd++;
  73. else
  74. k=-1;
  75. }
  76. for(k=i+1,l=j-1;k<n&&l>=0;k++,l--){
  77. if(b[k][l]=='X')
  78. rd++;
  79. else
  80. k=n;
  81. }
  82.  
  83. if(r>=x||c>=x||ld>=x||rd>=x){
  84. flag=1;
  85. break;
  86. }
  87. }
  88. }
  89. if(flag==1)
  90. break;
  91. }
  92. if(flag==1)
  93. printf("YES\n");
  94. else
  95. printf("NO\n");
  96. }
  97. return 0;
  98. }
Success #stdin #stdout 0s 3464KB
stdin
1
4 4
XOXO
OX..
XO..
OXOX
stdout
YES