fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<string> grid(10);
  5. vector<string> words;
  6. bool f;
  7.  
  8. void call(int ind)
  9. {
  10. if(!f) {
  11. return;
  12. }
  13. if(ind == words.size()) {
  14. if(f) {
  15. for(auto word: grid) {
  16. cout<<word<<endl;
  17. }
  18. f=false;
  19. }
  20. return;
  21. }
  22. int i,j,p,q,k;
  23. for(i=0;i<10;++i) {
  24. for(j=0;j<10;++j) {
  25. p=i,q=j;
  26. for(k=0;k<words[ind].size() && p+k<10;++k) {
  27. if(grid[p+k][q] != '-' && grid[p+k][q] != words[ind][k]) {
  28. break;
  29. }
  30. }
  31.  
  32. if(k==words[ind].size()) {
  33. vector<string> temp = grid;
  34. for(k=0;k<words[ind].size();++k) {
  35. grid[p+k][q] = words[ind][k];
  36. }
  37. call(ind+1);
  38. grid = temp;
  39. }
  40.  
  41. for(k=0;k<words[ind].size() && q+k<10;++k) {
  42. if(grid[p][q+k] != '-' && grid[p][q+k] != words[ind][k]) {
  43. break;
  44. }
  45. }
  46.  
  47. if(k==words[ind].size()) {
  48. vector<string> temp = grid;
  49. for(k=0;k<words[ind].size();++k) {
  50. grid[p][q+k] = words[ind][k];
  51. }
  52. call(ind+1);
  53. grid = temp;
  54. }
  55. }
  56. }
  57. }
  58.  
  59. int main()
  60. {
  61. f=true;
  62.  
  63. int i,j;
  64. for(i=0;i<10;++i) {
  65. cin>>grid[i];
  66. }
  67.  
  68. string s,w;
  69. cin>>w;
  70.  
  71. for(auto x: w) {
  72. if(x==';') {
  73. words.push_back(s);
  74. s="";
  75. } else
  76. s+=x;
  77. }
  78. words.push_back(s);
  79. call(0);
  80.  
  81. return 0;
  82. }
Success #stdin #stdout 0s 4236KB
stdin
Standard input is empty
stdout