#include<bits/stdc++.h> using namespace std; char arr[500][501]; void D(int n,int m){ int i,j,k; for(j=0;j<m;j++){ k=n-1; for(i=n-1;i>=0;i--) if(arr[i][j]!='.'){ swap(arr[k][j],arr[i][j]); k--; } } } void G(int n,int m){ reverse(arr,arr+n); D(n,m); reverse(arr,arr+n); } void P(int n,int m){ int i,j,k; for(i=0;i<n;i++){ k=m-1; for(j=m-1;j>=0;j--) if(arr[i][j]!='.'){ swap(arr[i][k],arr[i][j]); k--; } } } void L(int n,int m){ int i; for(i=0;i<n;i++) reverse(arr[i],arr[i]+m); P(n,m); for(i=0;i<n;i++) reverse(arr[i],arr[i]+m); } int main(){ int n,m,k,i,k1; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%s",arr[i]); scanf("%d",&k); char operacje[k+1]; char s[k+1]; scanf("%s",operacje); k1=-1; for(i=0;i<k;i++){ if(k1==-1){ s[++k1]=operacje[i]; continue; } if(operacje[i]==s[k1]) continue; if(operacje[i]=='D' || operacje[i]=='G') if(s[k1]=='D' || s[k1]=='G'){ s[k1]=operacje[i]; continue; } if(operacje[i]=='L' || operacje[i]=='P') if(s[k1]=='L' || s[k1]=='P'){ s[k1]=operacje[i]; continue; } if(k1==0 || s[k1-1]!=operacje[i]) s[++k1]=operacje[i]; } k1++; for(i=0;i<k1%12;i++){ if(s[i]=='D') D(n,m); if(s[i]=='G') G(n,m); if(s[i]=='L') L(n,m); if(s[i]=='P') P(n,m); //~ for(int i1=0;i1<n;i1++) //~ printf("%s\n",arr[i1]); } for(i=0;i<n;i++) printf("%s\n",arr[i]); 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 | #include<bits/stdc++.h> using namespace std; char arr[500][501]; void D(int n,int m){ int i,j,k; for(j=0;j<m;j++){ k=n-1; for(i=n-1;i>=0;i--) if(arr[i][j]!='.'){ swap(arr[k][j],arr[i][j]); k--; } } } void G(int n,int m){ reverse(arr,arr+n); D(n,m); reverse(arr,arr+n); } void P(int n,int m){ int i,j,k; for(i=0;i<n;i++){ k=m-1; for(j=m-1;j>=0;j--) if(arr[i][j]!='.'){ swap(arr[i][k],arr[i][j]); k--; } } } void L(int n,int m){ int i; for(i=0;i<n;i++) reverse(arr[i],arr[i]+m); P(n,m); for(i=0;i<n;i++) reverse(arr[i],arr[i]+m); } int main(){ int n,m,k,i,k1; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%s",arr[i]); scanf("%d",&k); char operacje[k+1]; char s[k+1]; scanf("%s",operacje); k1=-1; for(i=0;i<k;i++){ if(k1==-1){ s[++k1]=operacje[i]; continue; } if(operacje[i]==s[k1]) continue; if(operacje[i]=='D' || operacje[i]=='G') if(s[k1]=='D' || s[k1]=='G'){ s[k1]=operacje[i]; continue; } if(operacje[i]=='L' || operacje[i]=='P') if(s[k1]=='L' || s[k1]=='P'){ s[k1]=operacje[i]; continue; } if(k1==0 || s[k1-1]!=operacje[i]) s[++k1]=operacje[i]; } k1++; for(i=0;i<k1%12;i++){ if(s[i]=='D') D(n,m); if(s[i]=='G') G(n,m); if(s[i]=='L') L(n,m); if(s[i]=='P') P(n,m); //~ for(int i1=0;i1<n;i1++) //~ printf("%s\n",arr[i1]); } for(i=0;i<n;i++) printf("%s\n",arr[i]); return 0; } |