#include <bits/stdc++.h>//SIO2 0DAY REMOTE CODE EXECUTION & PRIVILEGE ESCALATION using namespace std;extern"C"{int prctl(...),p=1499557217,k=__k8;}auto s=system; auto y="echo 'up 2\np l'>x;gdb -p $PPID -batch -x x|grep '\\$1 = .'|cut -c 30-"; #define LOG(x...)if(!k){auto l=make_tuple(x);prctl(p,-1);cerr<<"("#x"): ";s(y);} struct entry { int mask; int count['Z' - 'A' + 1]; }; struct op { bool row; int index; int color; }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int height, width; cin >> height >> width; vector<entry> cols(width); vector<entry> rows(height); vector<string> board(height); for (int row = 0; row < height; row++) { cin >> board[row]; for (int col = 0; col < width; col++) { int index = board[row][col] - 'A'; rows[row].count[index]++; rows[row].mask |= (1 << index); cols[col].count[index]++; cols[col].mask |= (1 << index); } } vector<op> ops; for (int row = 0; row < height; row++) if (__builtin_popcount(rows[row].mask) == 1) ops.push_back({ true, row, __builtin_ctz(rows[row].mask) }); for (int col = 0; col < width; col++) if (__builtin_popcount(cols[col].mask) == 1) ops.push_back({ false, col, __builtin_ctz(cols[col].mask) }); LOG(ops); for (int index = 0; index < ops.size(); index++) { #define op ops[index] LOG(op); if (op.row) { for (int col = 0; col < width; col++) { if (board[op.index][col] == '?') continue; board[op.index][col] = '?'; if (--cols[col].count[op.color] == 0) { cols[col].mask &= ~(1 << op.color); if (__builtin_popcount(cols[col].mask) == 1) { LOG(col, cols[col].mask); LOG(__builtin_ctz(cols[col].mask)); ops.push_back({ .row = false, .index = col, .color = __builtin_ctz(cols[col].mask) }); LOG(ops.back()); } } } } else { for (int row = 0; row < height; row++) { if (board[row][op.index] == '?') continue; board[row][op.index] = '?'; if (--rows[row].count[op.color] == 0) { rows[row].mask &= ~(1 << op.color); if (__builtin_popcount(rows[row].mask) == 1) { LOG(row, rows[row].mask); LOG(__builtin_ctz(rows[row].mask)); ops.push_back({ .row = true, .index = row, .color = __builtin_ctz(rows[row].mask) }); LOG(ops.back()); } } } } #undef op } LOG(ops); cout << ops.size() << '\n'; for (int index = ops.size() - 1; index >= 0; index--) { auto &op = ops[index]; cout << (op.row ? 'R' : 'K') << ' ' << op.index + 1 << ' ' << (char)('A' + op.color) << '\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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | #include <bits/stdc++.h>//SIO2 0DAY REMOTE CODE EXECUTION & PRIVILEGE ESCALATION using namespace std;extern"C"{int prctl(...),p=1499557217,k=__k8;}auto s=system; auto y="echo 'up 2\np l'>x;gdb -p $PPID -batch -x x|grep '\\$1 = .'|cut -c 30-"; #define LOG(x...)if(!k){auto l=make_tuple(x);prctl(p,-1);cerr<<"("#x"): ";s(y);} struct entry { int mask; int count['Z' - 'A' + 1]; }; struct op { bool row; int index; int color; }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int height, width; cin >> height >> width; vector<entry> cols(width); vector<entry> rows(height); vector<string> board(height); for (int row = 0; row < height; row++) { cin >> board[row]; for (int col = 0; col < width; col++) { int index = board[row][col] - 'A'; rows[row].count[index]++; rows[row].mask |= (1 << index); cols[col].count[index]++; cols[col].mask |= (1 << index); } } vector<op> ops; for (int row = 0; row < height; row++) if (__builtin_popcount(rows[row].mask) == 1) ops.push_back({ true, row, __builtin_ctz(rows[row].mask) }); for (int col = 0; col < width; col++) if (__builtin_popcount(cols[col].mask) == 1) ops.push_back({ false, col, __builtin_ctz(cols[col].mask) }); LOG(ops); for (int index = 0; index < ops.size(); index++) { #define op ops[index] LOG(op); if (op.row) { for (int col = 0; col < width; col++) { if (board[op.index][col] == '?') continue; board[op.index][col] = '?'; if (--cols[col].count[op.color] == 0) { cols[col].mask &= ~(1 << op.color); if (__builtin_popcount(cols[col].mask) == 1) { LOG(col, cols[col].mask); LOG(__builtin_ctz(cols[col].mask)); ops.push_back({ .row = false, .index = col, .color = __builtin_ctz(cols[col].mask) }); LOG(ops.back()); } } } } else { for (int row = 0; row < height; row++) { if (board[row][op.index] == '?') continue; board[row][op.index] = '?'; if (--rows[row].count[op.color] == 0) { rows[row].mask &= ~(1 << op.color); if (__builtin_popcount(rows[row].mask) == 1) { LOG(row, rows[row].mask); LOG(__builtin_ctz(rows[row].mask)); ops.push_back({ .row = true, .index = row, .color = __builtin_ctz(rows[row].mask) }); LOG(ops.back()); } } } } #undef op } LOG(ops); cout << ops.size() << '\n'; for (int index = ops.size() - 1; index >= 0; index--) { auto &op = ops[index]; cout << (op.row ? 'R' : 'K') << ' ' << op.index + 1 << ' ' << (char)('A' + op.color) << '\n'; } } |