fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef vector<int> vi;
  5. typedef priority_queue<int> maxHeap;
  6. typedef priority_queue<int, vector<int>, greater<int>> minHeap;
  7. #define inputArray(a, n) \
  8.   for (int i = 0; i < n; i++) cin >> a[i];
  9. #define printArray(a, n) \
  10.   for (int i = 0; i < n; i++) cout << a[i] << endl;
  11. typedef pair<int, int> pii;
  12. #define endl "\n"
  13. #define PB push_back
  14. #define MP make_pair
  15. #define FF first
  16. #define SS second
  17. #define int long long
  18. #define MOD 1000000007
  19. #define PI 3.1415926535897932384626433832795
  20. #define clr(val, val1) memset(val, val1, sizeof(val))
  21. // #define LOCAL
  22.  
  23. void __init() {
  24. ios_base::sync_with_stdio(0);
  25. cin.tie(0);
  26. cout.tie(0);
  27. #ifdef LOCAL
  28. freopen("input.txt", "r", stdin);
  29. freopen("output.txt", "w", stdout);
  30. #endif
  31. }
  32.  
  33. void print(vector<vector<int>> out, int n, int m) {
  34. for (int i = 1; i <= n; i++) {
  35. for (int j = 1; j <= m; j++) {
  36. cout << out[i][j] << " ";
  37. }
  38. cout << endl;
  39. }
  40. }
  41.  
  42. void solve(int i, int j, int n, int m, vector<vector<int>> k, vector<vector<int>> out) {
  43. if (i == n and j == m) {
  44. print(out, n, m);
  45. return;
  46. }
  47.  
  48. if ((i == n && k[i][j + 1] == 0) || (j == m && k[i + 1][j] == 0) || (k[i + 1][j] == 0 && k[i][j + 1] == 0)) {
  49. return;
  50. }
  51.  
  52. int flag = 0, temp;
  53. if (k[i][j + 1] == 1) {
  54. flag = 1;
  55. temp = out[i][j + 1];
  56. out[i][j + 1] = 1;
  57. solve(i, j + 1, n, m, k, out);
  58. }
  59.  
  60. if (k[i + 1][j] == 1) {
  61. out[i + 1][j] = 1;
  62. if (flag == 1) {
  63. out[i][j + 1] = temp;
  64. }
  65. solve(i + 1, j, n, m, k, out);
  66. }
  67. }
  68.  
  69. int32_t main() {
  70. __init();
  71. int n, m;
  72. cin >> n >> m;
  73. vector<vector<int>> k(n + 1, vector<int>(m + 1));
  74. for (int i = 1; i < n + 1; i++) {
  75. for (int j = 1; j < m + 1; j++) {
  76. char x;
  77. cin >> x;
  78. if (x == 'O')
  79. k[i][j] = 1;
  80. else
  81. k[i][j] = 0;
  82. }
  83. }
  84.  
  85.  
  86. vector<vector<int>> out(n + 1, vector<int>(m + 1));
  87. for (int i = 1; i < n + 1; i++) {
  88. for (int j = 1; j < m + 1; j++) {
  89. out[i][j] = 0;
  90. }
  91. }
  92. out[1][1] = 1;
  93. solve(1, 1, n, m, k, out);
  94.  
  95. return 0;
  96. }
Runtime error #stdin #stdout 0s 4196KB
stdin
5 4
OXOO
OOOX
OOXO
XOOO
XXOO
stdout
Standard output is empty