#include <bits/stdc++.h>
//#define int long long
using namespace std;
int32_t main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
vector <vector <int>> h(n, vector <int> ('Z'-'A'+1));
vector <vector <int>> w(m, vector <int> ('Z'-'A'+1));
vector <vector <int>> a(n, vector <int> (m));
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
{
char x;
cin >> x;
a[i][j] = x - 'A';
h[i][a[i][j]]++;
w[j][a[i][j]]++;
}
bool flag = 1;
stack <string> ans;
while(flag){
flag = 0;
for(int j = 0; j < n; j++)
{
int cnt = 0;
int ni = 0;
for(int i = 0; i < 'Z'-'A'+1; i++){
if(h[j][i] > 0){
cnt++;
ni = i;
}
}
if(cnt == 1)
{
flag = 1;
ans.push("R " + to_string(j+1)+ " " + (char)('A'+ni) + "\n");
h[j][ni] = 0;
for(auto &g: w)
g[ni]--;
}
}
for(int j = 0; j < m; j++)
{
int cnt = 0;
int ni = 0;
for(int i = 0; i < 'Z'-'A'+1; i++){
if(w[j][i] > 0){
cnt++;
ni = i;
}
}
if(cnt == 1)
{
flag = 1;
ans.push("K " + to_string(j+1) + " " + (char)('A'+ni) + "\n");
w[j][ni] = 0;
for(auto &g: h)
g[ni]--;
}
}
}
cout << ans.size() << endl;
while(!ans.empty()){
cout << ans.top();
ans.pop();
}
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 | #include <bits/stdc++.h> //#define int long long using namespace std; int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; vector <vector <int>> h(n, vector <int> ('Z'-'A'+1)); vector <vector <int>> w(m, vector <int> ('Z'-'A'+1)); vector <vector <int>> a(n, vector <int> (m)); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { char x; cin >> x; a[i][j] = x - 'A'; h[i][a[i][j]]++; w[j][a[i][j]]++; } bool flag = 1; stack <string> ans; while(flag){ flag = 0; for(int j = 0; j < n; j++) { int cnt = 0; int ni = 0; for(int i = 0; i < 'Z'-'A'+1; i++){ if(h[j][i] > 0){ cnt++; ni = i; } } if(cnt == 1) { flag = 1; ans.push("R " + to_string(j+1)+ " " + (char)('A'+ni) + "\n"); h[j][ni] = 0; for(auto &g: w) g[ni]--; } } for(int j = 0; j < m; j++) { int cnt = 0; int ni = 0; for(int i = 0; i < 'Z'-'A'+1; i++){ if(w[j][i] > 0){ cnt++; ni = i; } } if(cnt == 1) { flag = 1; ans.push("K " + to_string(j+1) + " " + (char)('A'+ni) + "\n"); w[j][ni] = 0; for(auto &g: h) g[ni]--; } } } cout << ans.size() << endl; while(!ans.empty()){ cout << ans.top(); ans.pop(); } return 0; } |
English