#include <ios> #include <iostream> #include <type_traits> #define nl '\n' using namespace std; int n,m,k; char board[5007][5007]; void move_board(char direct) { if(direct == 'L'){ for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(board[i][j]!='.'){ int z=j; while (z>0&&board[i][z-1]=='.') { swap(board[i][z],board[i][z-1]); z--; } } } } } if(direct == 'P'){ for(int i=0; i<n; i++){ for(int j=m-1; j>=0; j--){ if(board[i][j]!='.'){ int z=j; while (z<m-1&&board[i][z+1]=='.') { swap(board[i][z],board[i][z+1]); z++; } } } } } if(direct == 'G'){ for(int j=0; j<m; j++){ for(int i=0; i<n; i++){ if(board[i][j]!='.'){ int z=i; while (z>0&&board[z-1][j]=='.') { swap(board[z-1][j],board[z][j]); z--; } } } } } if(direct == 'D'){ for(int j=0; j<m; j++){ for(int i=n-1; i>=0; i--){ if(board[i][j]!='.'){ int z=i; while (z<n-1&&board[z+1][j]=='.') { swap(board[z+1][j],board[z][j]); z++; } } } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cin>>board[i][j]; } } cin>>k; while(k--){ char tmp; cin>>tmp; move_board(tmp); } for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cout<<board[i][j]; } cout<<'\n'; } 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 | #include <ios> #include <iostream> #include <type_traits> #define nl '\n' using namespace std; int n,m,k; char board[5007][5007]; void move_board(char direct) { if(direct == 'L'){ for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(board[i][j]!='.'){ int z=j; while (z>0&&board[i][z-1]=='.') { swap(board[i][z],board[i][z-1]); z--; } } } } } if(direct == 'P'){ for(int i=0; i<n; i++){ for(int j=m-1; j>=0; j--){ if(board[i][j]!='.'){ int z=j; while (z<m-1&&board[i][z+1]=='.') { swap(board[i][z],board[i][z+1]); z++; } } } } } if(direct == 'G'){ for(int j=0; j<m; j++){ for(int i=0; i<n; i++){ if(board[i][j]!='.'){ int z=i; while (z>0&&board[z-1][j]=='.') { swap(board[z-1][j],board[z][j]); z--; } } } } } if(direct == 'D'){ for(int j=0; j<m; j++){ for(int i=n-1; i>=0; i--){ if(board[i][j]!='.'){ int z=i; while (z<n-1&&board[z+1][j]=='.') { swap(board[z+1][j],board[z][j]); z++; } } } } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cin>>board[i][j]; } } cin>>k; while(k--){ char tmp; cin>>tmp; move_board(tmp); } for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cout<<board[i][j]; } cout<<'\n'; } return 0; } |