#include <bits/stdc++.h> using namespace std; int tp[510][510]; void moveL(int n, int m) { for(int i = 1; i <= n; i++) { vector<int>kt; for(int j = 1; j <= m; j++) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int j = 1; j <= kt.size(); j++) { tp[i][j] = kt[j - 1]; } for(int j = kt.size() + 1; j <= m; j++) { tp[i][j] = 0; } } } void moveR(int n, int m) { for(int i = 1; i <= n; i++) { vector<int>kt; for(int j = m; j >= 1; j--) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int j = 0; j < kt.size(); j++) { tp[i][m - j] = kt[j]; } for(int j = 1; j <= m - kt.size(); j++) { tp[i][j] = 0; } } } void moveU(int n, int m) { for(int j = 1; j <= m; j++) { vector<int>kt; for(int i = 1; i <= n; i++) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int i = 1; i <= kt.size(); i++) { tp[i][j] = kt[i - 1]; } for(int i = kt.size() + 1; i <= n; i++) { tp[i][j] = 0; } } } void moveD(int n, int m) { for(int j = 1; j <= m; j++) { vector<int>kt; for(int i = n; i >= 1; i--) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int i = 0; i < kt.size(); i++) { tp[n - i][j] = kt[i]; } for(int i = 1; i <= n - kt.size(); i++) { tp[i][j] = 0; } } } void wyp(int n, int m) { //cout << '\n'; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { if(!tp[i][j]) { cout << '.'; } else if(tp[i][j] == 1) { cout << 'B'; } else { cout << 'C'; } } cout << '\n'; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i = 1; i <= n; i++) { string c; cin >> c; for(int j = 1; j <= m; j++) { if(c[j - 1] == 'B') { tp[i][j] = 1; } if(c[j - 1] == 'C') { tp[i][j] = 2; } } } int k; cin >> k; string c; cin >> c; int tp1 = 0; int tp2 = 0; for(auto x : c) { if(x == 'G') { moveU(n, m); } if(x == 'D') { moveD(n, m); } if(x == 'L') { moveL(n, m); } if(x == 'P') { moveR(n, m); } } wyp(n, m); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | #include <bits/stdc++.h> using namespace std; int tp[510][510]; void moveL(int n, int m) { for(int i = 1; i <= n; i++) { vector<int>kt; for(int j = 1; j <= m; j++) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int j = 1; j <= kt.size(); j++) { tp[i][j] = kt[j - 1]; } for(int j = kt.size() + 1; j <= m; j++) { tp[i][j] = 0; } } } void moveR(int n, int m) { for(int i = 1; i <= n; i++) { vector<int>kt; for(int j = m; j >= 1; j--) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int j = 0; j < kt.size(); j++) { tp[i][m - j] = kt[j]; } for(int j = 1; j <= m - kt.size(); j++) { tp[i][j] = 0; } } } void moveU(int n, int m) { for(int j = 1; j <= m; j++) { vector<int>kt; for(int i = 1; i <= n; i++) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int i = 1; i <= kt.size(); i++) { tp[i][j] = kt[i - 1]; } for(int i = kt.size() + 1; i <= n; i++) { tp[i][j] = 0; } } } void moveD(int n, int m) { for(int j = 1; j <= m; j++) { vector<int>kt; for(int i = n; i >= 1; i--) { if(tp[i][j]) { kt.push_back(tp[i][j]); } } for(int i = 0; i < kt.size(); i++) { tp[n - i][j] = kt[i]; } for(int i = 1; i <= n - kt.size(); i++) { tp[i][j] = 0; } } } void wyp(int n, int m) { //cout << '\n'; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { if(!tp[i][j]) { cout << '.'; } else if(tp[i][j] == 1) { cout << 'B'; } else { cout << 'C'; } } cout << '\n'; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i = 1; i <= n; i++) { string c; cin >> c; for(int j = 1; j <= m; j++) { if(c[j - 1] == 'B') { tp[i][j] = 1; } if(c[j - 1] == 'C') { tp[i][j] = 2; } } } int k; cin >> k; string c; cin >> c; int tp1 = 0; int tp2 = 0; for(auto x : c) { if(x == 'G') { moveU(n, m); } if(x == 'D') { moveD(n, m); } if(x == 'L') { moveL(n, m); } if(x == 'P') { moveR(n, m); } } wyp(n, m); } |