#include <bits/stdc++.h>
using namespace std;
int A[2001][2001], R[2001][27], K[2001][27], a, b, k=1, x, y;
set <int> rz[2001];
set <int> ko[2001];
string q;
int od[4001][3];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>a>>b;
x=a;
y=b;
for(int i=0; i<a; ++i){
cin>>q;
for(int j=0; j<b; ++j){
A[i][j]=(int)q[j] - 64;
rz[i].insert(A[i][j]);
ko[j].insert(A[i][j]);
R[i][A[i][j]]++;
K[j][A[i][j]]++;
}
if(rz[i].size()==1){
x--;
od[k][0]=82;
od[k][1]=i+1;
od[k][2]=*rz[i].begin();
rz[i].clear();
for(int j=0; j<b; ++j){
K[j][od[k][2]]--;
if(K[j][od[k][2]]==0){
ko[j].erase(od[k][2]);
}
}
++k;
}
}
while( x>0 && y>0){
for(int j=0; j<b; ++j){
if(ko[j].size()==1){
y--;
od[k][0]=75;
od[k][1]=j+1;
od[k][2]=*ko[j].begin();
ko[j].clear();
for(int i=0; i<a; ++i){
R[i][od[k][2]]--;
if(R[i][od[k][2]]==0){
rz[i].erase(od[k][2]);
}
}
++k;
}
}
for(int i=0; i<a; ++i){
if(rz[i].size()==1){
x--;
od[k][0]=82;
od[k][1]=i+1;
od[k][2]=*rz[i].begin();
rz[i].clear();
for(int j=0; j<b; ++j){
K[j][od[k][2]]--;
if(K[j][od[k][2]]==0){
ko[j].erase(od[k][2]);
}
}
++k;
}
}
}
--k;
cout<<k<<"\n";
while(k){
cout<<(char)od[k][0]<<" "<<od[k][1]<<" "<<(char)(64+od[k][2])<<"\n";
--k;
}
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 79 80 81 82 83 84 85 86 87 | #include <bits/stdc++.h> using namespace std; int A[2001][2001], R[2001][27], K[2001][27], a, b, k=1, x, y; set <int> rz[2001]; set <int> ko[2001]; string q; int od[4001][3]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>a>>b; x=a; y=b; for(int i=0; i<a; ++i){ cin>>q; for(int j=0; j<b; ++j){ A[i][j]=(int)q[j] - 64; rz[i].insert(A[i][j]); ko[j].insert(A[i][j]); R[i][A[i][j]]++; K[j][A[i][j]]++; } if(rz[i].size()==1){ x--; od[k][0]=82; od[k][1]=i+1; od[k][2]=*rz[i].begin(); rz[i].clear(); for(int j=0; j<b; ++j){ K[j][od[k][2]]--; if(K[j][od[k][2]]==0){ ko[j].erase(od[k][2]); } } ++k; } } while( x>0 && y>0){ for(int j=0; j<b; ++j){ if(ko[j].size()==1){ y--; od[k][0]=75; od[k][1]=j+1; od[k][2]=*ko[j].begin(); ko[j].clear(); for(int i=0; i<a; ++i){ R[i][od[k][2]]--; if(R[i][od[k][2]]==0){ rz[i].erase(od[k][2]); } } ++k; } } for(int i=0; i<a; ++i){ if(rz[i].size()==1){ x--; od[k][0]=82; od[k][1]=i+1; od[k][2]=*rz[i].begin(); rz[i].clear(); for(int j=0; j<b; ++j){ K[j][od[k][2]]--; if(K[j][od[k][2]]==0){ ko[j].erase(od[k][2]); } } ++k; } } } --k; cout<<k<<"\n"; while(k){ cout<<(char)od[k][0]<<" "<<od[k][1]<<" "<<(char)(64+od[k][2])<<"\n"; --k; } return 0; } |
English