#include<bits/stdc++.h> using namespace std; char T[505][505]; void up(int n,int m) { int j,i,p; for(j=0;j<m;j++) { for(i=1;i<n;i++) { if(T[i][j]!='.') { p=i-1; while(p>=0 && T[p][j]=='.') p--; p++; if (p<i) { T[p][j]=T[i][j]; T[i][j]='.'; } } } } } void down(int n,int m) { int j,i,p; for(j=0;j<m;j++) { for(i=n-2;i>=0;i--) { if(T[i][j]!='.') { p=i+1; while(p<n && T[p][j]=='.') p++; p--; if (p>i) { T[p][j]=T[i][j]; T[i][j]='.'; } } } } } void left(int n,int m) { int i,j,p; for(i=0;i<n;i++) { for(j=1;j<m;j++) { if(T[i][j]!='.') { p=j-1; while(p>=0 && T[i][p]=='.') p--; p++; if(p<j) { T[i][p]=T[i][j]; T[i][j]='.'; } } } } } void right(int n,int m) { int i,j,p; for(i=0;i<n;i++) { for(j=m-2;j>=0;j--) { if(T[i][j]!='.') { p=j+1; while(p<m && T[i][p]=='.') p++; p--; if(p>j) { T[i][p]=T[i][j]; T[i][j]='.'; } } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m,i,j,k; string s; char x; cin >> n >> m; for(i=0;i<n;i++) { for(j=0;j<m;j++) cin >> T[i][j]; } cin >> k >> s; for(i=0;i<s.size();i++) { x=s[i]; if(x=='G') up(n,m); else if(x=='D') down(n,m); else if(x=='L') left(n,m); else if(x=='P') right(n,m); } for(i=0;i<n;i++) { for(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 | #include<bits/stdc++.h> using namespace std; char T[505][505]; void up(int n,int m) { int j,i,p; for(j=0;j<m;j++) { for(i=1;i<n;i++) { if(T[i][j]!='.') { p=i-1; while(p>=0 && T[p][j]=='.') p--; p++; if (p<i) { T[p][j]=T[i][j]; T[i][j]='.'; } } } } } void down(int n,int m) { int j,i,p; for(j=0;j<m;j++) { for(i=n-2;i>=0;i--) { if(T[i][j]!='.') { p=i+1; while(p<n && T[p][j]=='.') p++; p--; if (p>i) { T[p][j]=T[i][j]; T[i][j]='.'; } } } } } void left(int n,int m) { int i,j,p; for(i=0;i<n;i++) { for(j=1;j<m;j++) { if(T[i][j]!='.') { p=j-1; while(p>=0 && T[i][p]=='.') p--; p++; if(p<j) { T[i][p]=T[i][j]; T[i][j]='.'; } } } } } void right(int n,int m) { int i,j,p; for(i=0;i<n;i++) { for(j=m-2;j>=0;j--) { if(T[i][j]!='.') { p=j+1; while(p<m && T[i][p]=='.') p++; p--; if(p>j) { T[i][p]=T[i][j]; T[i][j]='.'; } } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m,i,j,k; string s; char x; cin >> n >> m; for(i=0;i<n;i++) { for(j=0;j<m;j++) cin >> T[i][j]; } cin >> k >> s; for(i=0;i<s.size();i++) { x=s[i]; if(x=='G') up(n,m); else if(x=='D') down(n,m); else if(x=='L') left(n,m); else if(x=='P') right(n,m); } for(i=0;i<n;i++) { for(j=0;j<m;j++) cout << T[i][j]; cout << endl; } return 0; } |