#include int convertNum(char temp); int convertSuit(char temp); int main() { int deck[52]; int decknum, isValid, winner, leadsuit; int player1num[13]; int player1suit[13]; int player2num[13]; int player2suit[13]; int player3num[13]; int player3suit[13]; int player4num[13]; int player4suit[13]; int cardNum[4]; int i, j; char temp[5]; cin >> temp; while(true) { if(cin.eof()) break; isValid = 1; for(i=0; i<52; i++) deck[i] = 0; for(i=0; i<13; i++) { player1num[i] = convertNum(temp[0]); player1suit[i] = convertSuit(temp[1]); decknum = (player1num[i]) + (player1suit[i]*13); if(deck[decknum]) { isValid = 0; } else deck[decknum] = 1; cin >> temp; } for(i=0; i<13; i++) { player2num[i] = convertNum(temp[0]); player2suit[i] = convertSuit(temp[1]); decknum = (player2num[i]) + (player2suit[i]*13); if(deck[decknum]) { isValid = 0; } else deck[decknum] = 1; cin >> temp; } for(i=0; i<13; i++) { player3num[i] = convertNum(temp[0]); player3suit[i] = convertSuit(temp[1]); decknum = (player3num[i]) + (player3suit[i]*13); if(deck[decknum]) { isValid = 0; } else deck[decknum] = 1; cin >> temp; } for(i=0; i<13; i++) { player4num[i] = convertNum(temp[0]); player4suit[i] = convertSuit(temp[1]); decknum = (player4num[i]) + (player4suit[i]*13); if(deck[decknum]) { isValid = 0; } else deck[decknum] = 1; cin >> temp; } winner = 0; if(isValid) { for(i=0; i<13; i++) { if(winner==0) { leadsuit = 0; if( !((player1num[i] == 0 && player1suit[i] == 0) || (player2num[i] == 0 && player2suit[i] == 0) || (player3num[i] == 0 && player3suit[i] == 0) || (player4num[i] == 0 && player4suit[i] == 0))) { isValid = 0; break; } } else { if(winner == 1) leadsuit = player1suit[i]; if(winner == 2) leadsuit = player2suit[i]; if(winner == 3) leadsuit = player3suit[i]; if(winner == 4) leadsuit = player4suit[i]; } if(player1suit[i] == leadsuit) cardNum[0] = player1num[i]; else { for(j=i+1; j<13; j++) { if(player1suit[j] == leadsuit) { isValid = 0; } } if(isValid == 0) break; cardNum[0] = -1; } if(player2suit[i] == leadsuit) cardNum[1] = player2num[i]; else { for(j=i+1; j<13; j++) { if(player2suit[j] == leadsuit) { isValid = 0; } } if(isValid == 0) break; cardNum[1] = -1; } if(player3suit[i] == leadsuit) cardNum[2] = player3num[i]; else { for(j=i+1; j<13; j++) { if(player3suit[j] == leadsuit) { isValid = 0; } } if(isValid == 0) break; cardNum[2] = -1; } if(player4suit[i] == leadsuit) cardNum[3] = player4num[i]; else { for(j=i+1; j<13; j++) { if(player4suit[j] == leadsuit) { isValid = 0; } } if(isValid == 0) break; cardNum[3] = -1; } for(j=0; j<4; j++) { if(cardNum[j] > cardNum[winner-1]) winner = j+1; } } } if(isValid) cout << "Valid" << endl; else cout << "Invalid" << endl; } return 1; } int convertNum(char temp) { if(temp == 'T') return 8; if(temp == 'J') return 9; if(temp == 'Q') return 10; if(temp == 'K') return 11; if(temp == 'A') return 12; return temp - '2'; } int convertSuit(char temp) { if(temp == 'C') return 0; if(temp == 'D') return 1; if(temp == 'H') return 2; if(temp == 'S') return 3; return 4; }