#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m,x;
cin >> n >> m;
int n1=n,m1=m;
char a,b;
vector<vector<int>>k(m,vector<int>(26, 0));
vector<vector<int>>r(n,vector<int>(26, 0));
vector<vector<int>>v(n, vector<int>(m));
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cin >> a;
x = (int)a;
x -= 65;
v[i][j] = x;
k[j][x]++;
r[i][x]++;
}
}
stack<pair<char, pair<int, int>>>odp;
while (m1 > 0 and n1 > 0){
for (int i = 0; i < m; i++){
if(m1 <= 0)break;
for (int j = 0; j < 26; j++){
if(k[i][j] == n1){
k[i][j] = 0;
odp.push(make_pair('K', make_pair(i+1,j)));
m1--;
for (int l = 0; l < n; l++){
r[l][j]--;
}
break;
}
else if(k[i][j] > 0)break;
}
}
for (int i = 0; i < n; i++){
if(n1 <= 0)break;
for (int j = 0; j < 26; j++){
if(r[i][j] == m1){
odp.push(make_pair('R',make_pair(i+1,j)));
n1--;
for (int l = 0; l < m; l++){
k[l][j]--;
}
break;
}
else if(r[i][j] > 0)break;
}
}
}
cout << odp.size() << endl;
while (odp.size() > 0){
pair<char,pair<int, int>>p;
p = odp.top();
odp.pop();
x = p.second.second;
x += 65;
a = (char)x;
b = p.first;
x = p.second.first;
cout << b << " " << x << " " << a << 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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,x; cin >> n >> m; int n1=n,m1=m; char a,b; vector<vector<int>>k(m,vector<int>(26, 0)); vector<vector<int>>r(n,vector<int>(26, 0)); vector<vector<int>>v(n, vector<int>(m)); for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ cin >> a; x = (int)a; x -= 65; v[i][j] = x; k[j][x]++; r[i][x]++; } } stack<pair<char, pair<int, int>>>odp; while (m1 > 0 and n1 > 0){ for (int i = 0; i < m; i++){ if(m1 <= 0)break; for (int j = 0; j < 26; j++){ if(k[i][j] == n1){ k[i][j] = 0; odp.push(make_pair('K', make_pair(i+1,j))); m1--; for (int l = 0; l < n; l++){ r[l][j]--; } break; } else if(k[i][j] > 0)break; } } for (int i = 0; i < n; i++){ if(n1 <= 0)break; for (int j = 0; j < 26; j++){ if(r[i][j] == m1){ odp.push(make_pair('R',make_pair(i+1,j))); n1--; for (int l = 0; l < m; l++){ k[l][j]--; } break; } else if(r[i][j] > 0)break; } } } cout << odp.size() << endl; while (odp.size() > 0){ pair<char,pair<int, int>>p; p = odp.top(); odp.pop(); x = p.second.second; x += 65; a = (char)x; b = p.first; x = p.second.first; cout << b << " " << x << " " << a << endl; } } |
English