#include <bits/stdc++.h> using namespace std; long long int wys, szer, iloscRuchow; string tab[507]; string ruchy; void przesunGora(){ for(int k = 0; k < wys; k++){ for(int i = 1; i < wys; i++){ for(int j = 0; j < szer; j++) if(tab[i-1][j] == '.' && tab[i][j] != '.'){ swap(tab[i-1][j], tab[i][j]); } } } } void przesunDol(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = 0; j < szer; j++) if(tab[i+1][j] == '.' && tab[i][j] != '.'){ swap(tab[i+1][j], tab[i][j]); } } } } void przesunLewo(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = 0; j < szer-1; j++) if(tab[i][j] == '.' && tab[i][j+1] != '.'){ swap(tab[i][j], tab[i][j+1]); } } } } void przesunPrawo(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = szer -1; j >= 0; j--) if(tab[i][j+1] == '.' && tab[i][j] != '.'){ swap(tab[i][j], tab[i][j+1]); } } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> wys >> szer; for(int i = 0; i < wys; i++){ cin >> tab[i]; } cin >> iloscRuchow >> ruchy; for(int i = 0; i < iloscRuchow; i++){ if(ruchy[i] == 'G'){ przesunGora(); } else if(ruchy[i] == 'D'){ przesunDol(); } else if(ruchy[i] == 'L'){ przesunLewo(); } else if (ruchy[i] == 'P'){ przesunPrawo(); } } for(int i = 0; i < wys; i++){ cout << tab[i] << endl; } 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 | #include <bits/stdc++.h> using namespace std; long long int wys, szer, iloscRuchow; string tab[507]; string ruchy; void przesunGora(){ for(int k = 0; k < wys; k++){ for(int i = 1; i < wys; i++){ for(int j = 0; j < szer; j++) if(tab[i-1][j] == '.' && tab[i][j] != '.'){ swap(tab[i-1][j], tab[i][j]); } } } } void przesunDol(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = 0; j < szer; j++) if(tab[i+1][j] == '.' && tab[i][j] != '.'){ swap(tab[i+1][j], tab[i][j]); } } } } void przesunLewo(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = 0; j < szer-1; j++) if(tab[i][j] == '.' && tab[i][j+1] != '.'){ swap(tab[i][j], tab[i][j+1]); } } } } void przesunPrawo(){ for(int k = 0; k < wys; k++){ for(int i = wys; i >= 0; i--){ for(int j = szer -1; j >= 0; j--) if(tab[i][j+1] == '.' && tab[i][j] != '.'){ swap(tab[i][j], tab[i][j+1]); } } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> wys >> szer; for(int i = 0; i < wys; i++){ cin >> tab[i]; } cin >> iloscRuchow >> ruchy; for(int i = 0; i < iloscRuchow; i++){ if(ruchy[i] == 'G'){ przesunGora(); } else if(ruchy[i] == 'D'){ przesunDol(); } else if(ruchy[i] == 'L'){ przesunLewo(); } else if (ruchy[i] == 'P'){ przesunPrawo(); } } for(int i = 0; i < wys; i++){ cout << tab[i] << endl; } return 0; } |