#include<bits/stdc++.h> using namespace std; #define fr first #define sc second int tab[506][506]; set<pair<pair<int,int>,int>>r,c,t; int w[506]; void move(char cc,int n,int m) { if(cc=='L') { memset(w,0,sizeof w); for(auto it:c) { w[it.fr.sc]++; int id=w[it.fr.sc]; t.insert({{id,it.fr.sc},it.sc}); auto it2=r.find({{it.fr.sc,it.fr.fr},it.sc}); r.erase(it2); r.insert({{it.fr.sc,id},it.sc}); } c=t; t.clear(); } if(cc=='P') { for(int i=0;i<=500;i++)w[i]=m+1; auto it=c.end(); it--; for(;;it--) { w[(*it).fr.sc]--; int id=w[(*it).fr.sc]; t.insert({{id,(*it).fr.sc},(*it).sc}); auto it2=r.find({{(*it).fr.sc,(*it).fr.fr},(*it).sc}); r.erase(it2); r.insert({{(*it).fr.sc,id},(*it).sc}); if(it==c.begin())break; } c=t; t.clear(); } if(cc=='G') { memset(w,0,sizeof w); for(auto it:r) { w[it.fr.sc]++; int id=w[it.fr.sc]; t.insert({{id,it.fr.sc},it.sc}); auto it2=c.find({{it.fr.sc,it.fr.fr},it.sc}); c.erase(it2); c.insert({{it.fr.sc,id},it.sc}); } r.clear(); r=t; t.clear(); } if(cc=='D') { for(int i=0;i<=500;i++)w[i]=n+1; auto it=r.end(); it--; for(;;it--) { w[(*it).fr.sc]--; int id=w[(*it).fr.sc]; t.insert({{id,(*it).fr.sc},(*it).sc}); auto it2=c.find({{(*it).fr.sc,(*it).fr.fr},(*it).sc}); c.erase(it2); c.insert({{(*it).fr.sc,id},(*it).sc}); if(it==r.begin())break; } r=t; t.clear(); } } int main() { ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m;cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { char cc;cin>>cc; if(cc=='B') { r.insert({{i,j},1}); c.insert({{j,i},1}); } if(cc=='C') { r.insert({{i,j},2}); c.insert({{j,i},2}); } } } int k;cin>>k; string s;cin>>s; char p1='.',p2='.'; int b1=0,b2=0; for(int i=0;i<k;i++) { move(s[i],n,m); } //\\return 0; for(auto it:r) { tab[it.fr.fr][it.fr.sc]=it.sc; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(tab[i][j]==0)cout<<"."; else if(tab[i][j]==1)cout<<"B"; else cout<<"C"; } 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 115 116 117 118 119 120 121 122 123 124 | #include<bits/stdc++.h> using namespace std; #define fr first #define sc second int tab[506][506]; set<pair<pair<int,int>,int>>r,c,t; int w[506]; void move(char cc,int n,int m) { if(cc=='L') { memset(w,0,sizeof w); for(auto it:c) { w[it.fr.sc]++; int id=w[it.fr.sc]; t.insert({{id,it.fr.sc},it.sc}); auto it2=r.find({{it.fr.sc,it.fr.fr},it.sc}); r.erase(it2); r.insert({{it.fr.sc,id},it.sc}); } c=t; t.clear(); } if(cc=='P') { for(int i=0;i<=500;i++)w[i]=m+1; auto it=c.end(); it--; for(;;it--) { w[(*it).fr.sc]--; int id=w[(*it).fr.sc]; t.insert({{id,(*it).fr.sc},(*it).sc}); auto it2=r.find({{(*it).fr.sc,(*it).fr.fr},(*it).sc}); r.erase(it2); r.insert({{(*it).fr.sc,id},(*it).sc}); if(it==c.begin())break; } c=t; t.clear(); } if(cc=='G') { memset(w,0,sizeof w); for(auto it:r) { w[it.fr.sc]++; int id=w[it.fr.sc]; t.insert({{id,it.fr.sc},it.sc}); auto it2=c.find({{it.fr.sc,it.fr.fr},it.sc}); c.erase(it2); c.insert({{it.fr.sc,id},it.sc}); } r.clear(); r=t; t.clear(); } if(cc=='D') { for(int i=0;i<=500;i++)w[i]=n+1; auto it=r.end(); it--; for(;;it--) { w[(*it).fr.sc]--; int id=w[(*it).fr.sc]; t.insert({{id,(*it).fr.sc},(*it).sc}); auto it2=c.find({{(*it).fr.sc,(*it).fr.fr},(*it).sc}); c.erase(it2); c.insert({{(*it).fr.sc,id},(*it).sc}); if(it==r.begin())break; } r=t; t.clear(); } } int main() { ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m;cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { char cc;cin>>cc; if(cc=='B') { r.insert({{i,j},1}); c.insert({{j,i},1}); } if(cc=='C') { r.insert({{i,j},2}); c.insert({{j,i},2}); } } } int k;cin>>k; string s;cin>>s; char p1='.',p2='.'; int b1=0,b2=0; for(int i=0;i<k;i++) { move(s[i],n,m); } //\\return 0; for(auto it:r) { tab[it.fr.fr][it.fr.sc]=it.sc; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(tab[i][j]==0)cout<<"."; else if(tab[i][j]==1)cout<<"B"; else cout<<"C"; } cout<<"\n"; } } |