#include #include #include #include using namespace std; int n, c, q, k; string table[9+6+6] = {"Ballroom", "Billiard Room", "Conservatory", "Dining Room", "Hall", "Kitchen", "Library", "Lounge", "Study", "Candlestick", "Gun", "Knife", "Lead Pipe", "Rope", "Wrench", "Colonel Mustard", "Miss Scarlet", "Mrs. Peacock", "Mrs. White", "Professor Plum", "Reverend Green"}; int u[9+6+6]; ifstream in("clue.in"); #define cin in //ofstream out("clue.out"); //#define cout out void check(int s, int e) { vector res; res.clear(); for (int i = s; i < e; i++) if (u[i] == 0) res.push_back(table[i]); else if (u[i] == 1) { cout << table[i] << endl; return; } for (int i = 0; i < res.size(); i++) { cout << res[i] << endl; } } int getIndex(string entity) { for (int i = 0; i < 21; i++) if (table[i] == entity) return i; return -1; } int main() { int i, j; cin >> k; for (i = 1; i <= k ; i++) { cin >> n >> c >> q; memset(u, 0, sizeof(u)); char buffer[50]; string response, query[3]; cin.getline(buffer, 50); for (j = 0; j < c; j++) { cin.getline(buffer, 50); string s = string(buffer); u[getIndex(s)] = -1; } for (j = 0; j < q; j++) { for (int p = 0; p < 3; p++) { cin.getline(buffer, 50); query[p].assign(buffer); } int p; for (p = 0; p < n - 1; p++) { cin.getline(buffer, 50); response.assign(buffer); if (response != "Nothing") break; } if (p == n - 1) { for (int i = 0; i < 3; i++) if (u[getIndex(query[i])] != -1) u[getIndex(query[i])] = 1; } else u[getIndex(response)] = -1; } cout << "Data Set " << i << ":\n"; check(0, 9); check(9, 15); check(15, 21); cout << endl; } return 0; }