#include<iostream> #include<vector> #include<algorithm> using namespace std; void sp(char a, vector<vector<char> > &A){ int n = A.size(), m = A[0].size(); if(a=='L'){ for(int i=0;i<n;i++){ int k=0; for(int j=0;j<m;j++){ if(A[i][j]!='.'){ while(A[i][k]!='.' && k<n-1 && k!=j)k++; swap(A[i][j], A[i][k]); } } } } if(a=='P'){ for(int i=0;i<n;i++){ int k=m-1; for(int j=m-1;j>=0;j--){ if(A[i][j]!='.'){ while(A[i][k]!='.' && k>0 && k!=j)k--; swap(A[i][j], A[i][k]); } } } } if(a=='G'){ for(int j=0;j<m;j++){ int k=0; for(int i=0;i<n;i++){ if(A[i][j]!='.'){ while(A[k][j]!='.' && k<n-1 && k!=i)k++; swap(A[i][j], A[k][j]); } } } } if(a=='D'){ for(int j=0;j<m;j++){ int k=n-1; for(int i=n-1;i>=0;i--){ if(A[i][j]!='.'){ while(A[k][j]!='.' && k>0 && k!=i)k--; //cout << i << ' ' << j << ' ' << k << '\n'; swap(A[i][j], A[k][j]); } } } } } char rev(char a){ if(a=='L')return 'P'; if(a=='P')return 'L'; if(a=='G')return 'D'; if(a=='D')return 'G'; return 'W'; } int main(){ int n,m,k; cin >> n >> m; vector<vector<char> > A (n,vector<char> (m)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin >> A[i][j]; } } cin >> k; string S,S1,O=""; cin >> S; // S1.resize(k); // int newK = 0; // char last1='X', last2='X'; // for(int i=0;i<k;i++){ // if((S[i] == 'D' || S[i] == 'G') && last1 != S[i]){ // S1[newK] = S[i]; // newK++; // last1 = S[i]; // } // if((S[i] == 'L' || S[i] == 'P') && last2 != S[i]){ // S1[newK] = S[i]; // newK++; // last2 = S[i]; // } // } // S1.resize(newK); // S = S1; // cout << S << '\n'; // int temp =1; // while((S[temp] == S[0] || S[temp] == rev(S[0])) && temp<n)temp++; // O += S[temp-1]; // int temp1 = newK-1; // while((S[temp1] == S[0] || S[temp1] == rev(S[0])) && temp1 >0)temp1--; // O+= S[temp1]; // temp1 = newK-1; // while((S[temp1] != S[0] && S[temp1] != rev(S[0])) && temp1 >0)temp1--; // cout << temp1 << '\n'; // O+= S[temp1]; // cout << O << '\n'; // cin >> S; for(int i=0;i<S.size();i++){ //cout << S[i] << '\n'; sp(S[i],A); } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout << A[i][j]; } cout << '\n'; } }
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<iostream> #include<vector> #include<algorithm> using namespace std; void sp(char a, vector<vector<char> > &A){ int n = A.size(), m = A[0].size(); if(a=='L'){ for(int i=0;i<n;i++){ int k=0; for(int j=0;j<m;j++){ if(A[i][j]!='.'){ while(A[i][k]!='.' && k<n-1 && k!=j)k++; swap(A[i][j], A[i][k]); } } } } if(a=='P'){ for(int i=0;i<n;i++){ int k=m-1; for(int j=m-1;j>=0;j--){ if(A[i][j]!='.'){ while(A[i][k]!='.' && k>0 && k!=j)k--; swap(A[i][j], A[i][k]); } } } } if(a=='G'){ for(int j=0;j<m;j++){ int k=0; for(int i=0;i<n;i++){ if(A[i][j]!='.'){ while(A[k][j]!='.' && k<n-1 && k!=i)k++; swap(A[i][j], A[k][j]); } } } } if(a=='D'){ for(int j=0;j<m;j++){ int k=n-1; for(int i=n-1;i>=0;i--){ if(A[i][j]!='.'){ while(A[k][j]!='.' && k>0 && k!=i)k--; //cout << i << ' ' << j << ' ' << k << '\n'; swap(A[i][j], A[k][j]); } } } } } char rev(char a){ if(a=='L')return 'P'; if(a=='P')return 'L'; if(a=='G')return 'D'; if(a=='D')return 'G'; return 'W'; } int main(){ int n,m,k; cin >> n >> m; vector<vector<char> > A (n,vector<char> (m)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin >> A[i][j]; } } cin >> k; string S,S1,O=""; cin >> S; // S1.resize(k); // int newK = 0; // char last1='X', last2='X'; // for(int i=0;i<k;i++){ // if((S[i] == 'D' || S[i] == 'G') && last1 != S[i]){ // S1[newK] = S[i]; // newK++; // last1 = S[i]; // } // if((S[i] == 'L' || S[i] == 'P') && last2 != S[i]){ // S1[newK] = S[i]; // newK++; // last2 = S[i]; // } // } // S1.resize(newK); // S = S1; // cout << S << '\n'; // int temp =1; // while((S[temp] == S[0] || S[temp] == rev(S[0])) && temp<n)temp++; // O += S[temp-1]; // int temp1 = newK-1; // while((S[temp1] == S[0] || S[temp1] == rev(S[0])) && temp1 >0)temp1--; // O+= S[temp1]; // temp1 = newK-1; // while((S[temp1] != S[0] && S[temp1] != rev(S[0])) && temp1 >0)temp1--; // cout << temp1 << '\n'; // O+= S[temp1]; // cout << O << '\n'; // cin >> S; for(int i=0;i<S.size();i++){ //cout << S[i] << '\n'; sp(S[i],A); } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout << A[i][j]; } cout << '\n'; } } |