/******************************************************* Problem - Beat the Devil Solution by - Sean Falconer Algorithm: Straight-forward simulation of the card game. *******************************************************/ #include #include #include using namespace std; // check to see if we have a match on any of our piles bool match(string piles[], vector & deck, int & current) { for(int i = 0; i < 8; i++) if(piles[i] != "") { for(int j = i+1; j < 8; j++) if(piles[i][0] == piles[j][0]) { piles[i] = deck[current]; piles[j] = deck[current+1]; current += 2; return true; } } return false; } int main() { int T; cin >> T; for(int i = 0; i < T; i++) { vector deck(52); for(int j = 0; j < 52; j++) cin >> deck[j]; int current = 0; string piles[8]; bool win = false; while(1) { while(current < 52 && match(piles, deck, current)) {} if(current == 52) { win = true; break; } int j; for(j = 0; j < 8; j++) if(piles[j] == "") break; if(j == 8) break; piles[j] = deck[current++]; } cout << ((win) ? "Yes" : "No, eternal damnation is inevitable") << endl; } return 0; }