Files
exercises/pojcs101_M02692_12_coins.cpp
T
2026-07-24 13:46:36 +08:00

66 lines
1.9 KiB
C++

#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
void solveGroup() {
bool tempList[12] = {false};
bool realCoins[12] = {false};
vector<pair<string, string> > lighterResults;
for (int _ = 0; _ < 3; _++) {
string s1, s2, comparison;
cin >> s1 >> s2 >> comparison;
if (comparison == "even") {
for (const char c: s1 + s2) {
realCoins[c - 'A'] = true;
}
} else {
memset(tempList, false, sizeof(tempList));
for (const char c: s1 + s2) { tempList[c - 'A'] = true; }
for (int i = 0; i < 12; i++) {
if (!tempList[i]) { realCoins[i] = true; }
}
if (comparison == "down") {
lighterResults.emplace_back(s2, s1);
} else {
lighterResults.emplace_back(s1, s2);
}
}
}
for (int i = 0; i < 12; i++) {
if (realCoins[i]) continue;
int conclusion = 0;
for (const auto &[s1, s2]: lighterResults) {
if (s1.find(static_cast<char>(i + 'A')) != string::npos) {
if (conclusion == 1) {
conclusion = -2;
break;
}
conclusion = -1;
} else if (s2.find(static_cast<char>(i + 'A')) != string::npos) {
if (conclusion == -1) {
conclusion = -2;
break;
}
conclusion = 1;
}
}
if (conclusion == -2 || conclusion == 0) { continue; }
cout << static_cast<char>(i + 'A') << " is the counterfeit coin and it is "
<< (conclusion == 1 ? "light." : "heavy.") << endl;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
for (int _ = 0; _ < n; _++) {
solveGroup();
}
return 0;
}