fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int r, c;
  6. char m[35][35];
  7. vector <int> v;
  8.  
  9. void read()
  10. {
  11. cin>>r>>c;
  12. for (int i=0; i<=r+1; i++)
  13. {
  14. for (int j=0; j<=c+1; j++)
  15. {
  16. if (i==0 || i==r+1 || j==0 || j==c+1)
  17. m[i][j] = 'X';
  18. else
  19. {
  20. cin>>m[i][j];
  21. }
  22. }
  23. }
  24.  
  25. int n;
  26. cin>>n;
  27. for (int i=0; i<n; i++)
  28. {
  29. int a;
  30. cin>>a;
  31. v.push_back(a);
  32. }
  33. }
  34.  
  35. int findWay(int i, int j)
  36. {
  37. if (m[i+1][j] == 'X')
  38. {
  39. m[i][j] = 'O';
  40. return 1;
  41. }
  42. else if (m[i+1][j] == '.')
  43. {
  44. findWay(i+1, j);
  45. }
  46. else if (m[i+1][j] == 'O')
  47. {
  48. if (m[i][j-1] == '.' && m[i+1][j-1] == '.')
  49. {
  50. findWay(i+1, j-1);
  51. return 1;
  52. }
  53. else if (m[i][j+1]=='.' && m[i+1][j+1] == '.')
  54. {
  55. findWay(i+1, j+1);
  56. return 1;
  57. }
  58. else
  59. {
  60. m[i][j] = 'O';
  61. return 1;
  62. }
  63. }
  64. }
  65.  
  66. void out()
  67. {
  68. for (int i=1; i<=r; i++)
  69. {
  70. for (int j=1; j<=c; j++)
  71. {
  72. cout<<m[i][j];
  73. }
  74. cout<<endl;
  75. }
  76. }
  77.  
  78. void check()
  79. {
  80. cout<<r<<" "<<c<<endl;
  81. for (int i=0; i<=r+1; i++)
  82. {
  83. for (int j=0; j<=c+1; j++)
  84. {
  85. cout<<m[i][j];
  86. }
  87. cout<<endl;
  88. }
  89. cout<<v.size()<<endl;
  90. for (int i=0; i<v.size(); i++)
  91. cout<<v[i]<<endl;
  92. }
  93.  
  94. int main()
  95. {
  96. // freopen("input.txt", "r", stdin);
  97. read();
  98. for (int i=0; i<v.size(); i++)
  99. {
  100. findWay(1, v[i]);
  101. }
  102. out();
  103. // check();
  104. return 0;
  105. }
Success #stdin #stdout 0s 15240KB
stdin
7 6
......
......
...XX.
......
......
.XX...
......
6
1
4
4
6
4
4
stdout
......
...O..
...XX.
......
.OO...
.XX...
O..O.O