#include <bits/stdc++.h> using namespace std; char c[2100][2100]; int ck[2100][30], cr[2100][30]; int blk[2100], blr[2100]; vector<string> ans; int main() { int n,m, rn, rm; cin>>n>>m; rn=n; rm=m; for(int i=0; i<n; i++) for(int j=0; j<m; j++) { char k; cin>>k; k-='A'; c[i][j]=k; ck[j][k]++; cr[i][k]++; } while(rm||rn) { for(int i=0; i<m; i++) for(int k=0; k<='Z'-'A'; k++) { if(ck[i][k]==rn&&!blk[i]) { string s = "K "; s+=to_string(i+1); s+=" "; s+='A'+k; ans.push_back(s); rm--; blk[i]=1; for(int z=0; z<m; z++) { cr[z][c[z][i]]--; } break; } } if(rm==0||rn==0) break; for(int i=0; i<n; i++) for(int k=0; k<='Z'-'A'; k++) { if(cr[i][k]==rm&&!blr[i]) { string s = "R "; s+=to_string(i+1); s+=" "; s+='A'+k; ans.push_back(s); rn--; blr[i]=1; for(int z=0; z<m; z++) { ck[z][c[i][z]]--; } break; } } } cout<<ans.size()<<"\n"; for(auto it=ans.rbegin(); it!=ans.rend(); it++) cout<<*it<<"\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 | #include <bits/stdc++.h> using namespace std; char c[2100][2100]; int ck[2100][30], cr[2100][30]; int blk[2100], blr[2100]; vector<string> ans; int main() { int n,m, rn, rm; cin>>n>>m; rn=n; rm=m; for(int i=0; i<n; i++) for(int j=0; j<m; j++) { char k; cin>>k; k-='A'; c[i][j]=k; ck[j][k]++; cr[i][k]++; } while(rm||rn) { for(int i=0; i<m; i++) for(int k=0; k<='Z'-'A'; k++) { if(ck[i][k]==rn&&!blk[i]) { string s = "K "; s+=to_string(i+1); s+=" "; s+='A'+k; ans.push_back(s); rm--; blk[i]=1; for(int z=0; z<m; z++) { cr[z][c[z][i]]--; } break; } } if(rm==0||rn==0) break; for(int i=0; i<n; i++) for(int k=0; k<='Z'-'A'; k++) { if(cr[i][k]==rm&&!blr[i]) { string s = "R "; s+=to_string(i+1); s+=" "; s+='A'+k; ans.push_back(s); rn--; blr[i]=1; for(int z=0; z<m; z++) { ck[z][c[i][z]]--; } break; } } } cout<<ans.size()<<"\n"; for(auto it=ans.rbegin(); it!=ans.rend(); it++) cout<<*it<<"\n"; } |