#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; } |
English