#include <bits/stdc++.h> using namespace std; string k; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(nullptr); std::cout.tie(nullptr); int n, m; cin>>n>>m; string t[m]; for(int i=0; i<n; ++i) { cin>>t[i]; } int il; cin>>il; cin>>k; if(n==1 && m==1) cout<<t[0][0]; else {for(int b=0; b<k.size(); ++b) { if(k[b]=='G') { for(int y=0; y<m; ++y) { int poz=0; while(t[poz][y]!='.' && poz<n) ++poz; for(int z=poz+1; z<n; ++z) { if(poz<n) { if(t[z][y]!='.') { t[poz][y]=t[z][y]; t[z][y]='.'; while(t[poz][y]!='.') ++poz; } } else break; } } } else if(k[b]=='D') { for(int y=0; y<m; ++y) { int poz=n-1; while(t[poz][y]!='.' && poz>=0) --poz; for(int z=poz-1; z>=0; --z) { if(poz>=0) { if(t[z][y]!='.') { t[poz][y]=t[z][y]; t[z][y]='.'; while(t[poz][y]!='.') --poz; } } else break; } } } else if(k[b]=='L') { for(int z=0; z<n; ++z) { int poz=0; while(t[z][poz]!='.' && poz<m) ++poz; for(int y=poz+1; y<m; ++y) { if(poz<m) { if(t[z][y]!='.') { t[z][poz]=t[z][y]; t[z][y]='.'; while(t[z][poz]!='.') ++poz; } } else break; } } } else if(k[b]=='P') { for(int z=0; z<n; ++z) { int poz=m-1; while(t[z][poz]!='.' && poz>=0) --poz; for(int y=poz-1; y>=0; --y) { if(poz>=0) { if(t[z][y]!='.') { t[z][poz]=t[z][y]; t[z][y]='.'; while(t[z][poz]!='.') --poz; } } else break; } } } } for(int i=0; i<n; ++i) { for(int j=0; j<m; ++j) cout<<t[i][j]; cout<<endl; } } return 0; }
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 124 125 | #include <bits/stdc++.h> using namespace std; string k; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(nullptr); std::cout.tie(nullptr); int n, m; cin>>n>>m; string t[m]; for(int i=0; i<n; ++i) { cin>>t[i]; } int il; cin>>il; cin>>k; if(n==1 && m==1) cout<<t[0][0]; else {for(int b=0; b<k.size(); ++b) { if(k[b]=='G') { for(int y=0; y<m; ++y) { int poz=0; while(t[poz][y]!='.' && poz<n) ++poz; for(int z=poz+1; z<n; ++z) { if(poz<n) { if(t[z][y]!='.') { t[poz][y]=t[z][y]; t[z][y]='.'; while(t[poz][y]!='.') ++poz; } } else break; } } } else if(k[b]=='D') { for(int y=0; y<m; ++y) { int poz=n-1; while(t[poz][y]!='.' && poz>=0) --poz; for(int z=poz-1; z>=0; --z) { if(poz>=0) { if(t[z][y]!='.') { t[poz][y]=t[z][y]; t[z][y]='.'; while(t[poz][y]!='.') --poz; } } else break; } } } else if(k[b]=='L') { for(int z=0; z<n; ++z) { int poz=0; while(t[z][poz]!='.' && poz<m) ++poz; for(int y=poz+1; y<m; ++y) { if(poz<m) { if(t[z][y]!='.') { t[z][poz]=t[z][y]; t[z][y]='.'; while(t[z][poz]!='.') ++poz; } } else break; } } } else if(k[b]=='P') { for(int z=0; z<n; ++z) { int poz=m-1; while(t[z][poz]!='.' && poz>=0) --poz; for(int y=poz-1; y>=0; --y) { if(poz>=0) { if(t[z][y]!='.') { t[z][poz]=t[z][y]; t[z][y]='.'; while(t[z][poz]!='.') --poz; } } else break; } } } } for(int i=0; i<n; ++i) { for(int j=0; j<m; ++j) cout<<t[i][j]; cout<<endl; } } return 0; } |