#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"; } |
English