#include <bits/stdc++.h> using namespace std; vector<pair<char,pair<int,int>>> odp; int ilk,ilw,kl[2009][27],wr[2009][27],tab[2009][2009],it; char a,alph[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; int main(){ cin.tie(0)->sync_with_stdio(0); cin >> ilw >> ilk; for(int i=0;i<ilw;i++){ for(int j=0;j<ilk;j++){ cin >> a; tab[j][i]=a-64; kl[j][a-64]++; wr[i][a-64]++; } } for(int x=0;x<ilk+ilw;x++){ for(int i=0;i<ilw;i++){ for(int j=1;j<27;j++){ if(wr[i][0]+wr[i][j]==ilk and wr[i][0]!=ilk){ for(int o=0;o<ilk;o++){ kl[o][tab[o][i]]--; kl[o][0]++; wr[i][tab[o][i]]--; wr[i][0]++; tab[o][i]=0; } odp.push_back({'R',{i+1,j-1}}); it++; if(it==ilk+ilw){ goto wynik; } break; } } } for(int i=0;i<ilk;i++){ for(int j=1;j<27;j++){ if(kl[i][0]+kl[i][j]==ilw and kl[i][0]!=ilw){ for(int o=0;o<ilw;o++){ wr[o][tab[i][o]]--; wr[o][0]++; kl[i][tab[i][o]]--; kl[i][0]++; tab[i][o]=0; } odp.push_back({'K',{i+1,j-1}}); it++; if(it==ilk+ilw){ goto wynik; } break; } } } } wynik: cout << it << endl; for(int i=odp.size()-1;i>=0;i--){ cout<<odp[i].first<<' '<<odp[i].second.first <<' '<< alph[odp[i].second.second] << endl; } }
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 | #include <bits/stdc++.h> using namespace std; vector<pair<char,pair<int,int>>> odp; int ilk,ilw,kl[2009][27],wr[2009][27],tab[2009][2009],it; char a,alph[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; int main(){ cin.tie(0)->sync_with_stdio(0); cin >> ilw >> ilk; for(int i=0;i<ilw;i++){ for(int j=0;j<ilk;j++){ cin >> a; tab[j][i]=a-64; kl[j][a-64]++; wr[i][a-64]++; } } for(int x=0;x<ilk+ilw;x++){ for(int i=0;i<ilw;i++){ for(int j=1;j<27;j++){ if(wr[i][0]+wr[i][j]==ilk and wr[i][0]!=ilk){ for(int o=0;o<ilk;o++){ kl[o][tab[o][i]]--; kl[o][0]++; wr[i][tab[o][i]]--; wr[i][0]++; tab[o][i]=0; } odp.push_back({'R',{i+1,j-1}}); it++; if(it==ilk+ilw){ goto wynik; } break; } } } for(int i=0;i<ilk;i++){ for(int j=1;j<27;j++){ if(kl[i][0]+kl[i][j]==ilw and kl[i][0]!=ilw){ for(int o=0;o<ilw;o++){ wr[o][tab[i][o]]--; wr[o][0]++; kl[i][tab[i][o]]--; kl[i][0]++; tab[i][o]=0; } odp.push_back({'K',{i+1,j-1}}); it++; if(it==ilk+ilw){ goto wynik; } break; } } } } wynik: cout << it << endl; for(int i=odp.size()-1;i>=0;i--){ cout<<odp[i].first<<' '<<odp[i].second.first <<' '<< alph[odp[i].second.second] << endl; } } |