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 <iostream>
#include <algorithm>
using namespace std;

char plansza[500][500];
int height, width;

void doGory(){
    int wolna = 0;
    for(int j = 0; j < width; j++){
        wolna = 0;
        for(int i = 0; i < height; i++){
            if(plansza[i][j] != '.'){
                    swap(plansza[i][j], plansza[wolna][j]);
                    wolna++;
            }
        }
    }
}
void doDolu(){
    int wolna = height;
    for(int j = width - 1; j >= 0; j--){
        wolna = height - 1;
        for(int i = height - 1; i >= 0; i--){
            if(plansza[i][j] != '.'){
                    swap(plansza[i][j], plansza[wolna][j]);
                    wolna--;
            }
        }
    }
}
void doLewej(){
    int wolna = 0;
    for(int i = 0; i < height; i++){
        wolna = 0;
        for(int j = 0; j < width; j++){
            if(plansza[i][j] != '.'){
                swap(plansza[i][j], plansza[i][wolna]);
                wolna++;
            }
        }
    }
}

void doPrawej(){
    int wolna = width - 1;
    for(int i = height - 1; i >= 0; i--){
        wolna = width - 1;
        for(int j = width - 1; j >= 0; j--){
            if(plansza[i][j] != '.'){
                swap(plansza[i][j], plansza[i][wolna]);
                wolna--;
            }
        }
    }
}

 int main(){
     cin >> height;
     cin >> width;

     for(int i = 0; i < height; i++){
         for(int j = 0; j < width; j++){
             cin >> plansza[i][j];
        }
    }
    int liczba_zmian;
    cin >> liczba_zmian;

    char jakieZmiany[liczba_zmian];

    for(int i = 0; i < liczba_zmian; i++){
        cin >> jakieZmiany[i];
    }

    for(int i = 0; i < liczba_zmian; i++){
        if(jakieZmiany[i] == 'G') doGory();
        if(jakieZmiany[i] == 'D') doDolu();
        if(jakieZmiany[i] == 'L') doLewej();
        if(jakieZmiany[i] == 'P') doPrawej();
    }

    for(int i = 0; i < height;i++){
        for(int j = 0; j < width; j++){
            cout << plansza[i][j];
        }
        cout << endl;
    }

    return 0;
}