std::vector<Quintet> NewPartnerLeptonic::Quintets(boca::Event const& event, std::function<Quintet(Quintet&)> const& function) { return Pairs(top_reader_.Multiplets(event), boson_reader_.Multiplets(event), [&](Triplet const & triplet, Doublet const & doublet) { Quintet quintet(triplet, doublet); if (quintet.Overlap()) throw Overlap(); return function(quintet); }); }
// Scoring system: calculates points for a given hand's value int CalculatePoints(struct card hand[HAND_SIZE]) { InsertionSort(hand); if (Repeats(hand)) // Check hand for cards with repeated ranks { if (Triple(hand)) // Check if it contains 3 of a kind { if (Pairs(hand) == 1) { return 6; } // FULL HOUSE else { return 3; } // 3 OF A KIND } else { int pairs = Pairs(hand); // Check for pairs if (pairs == 1) { return 1; } // ONE PAIR else if (pairs == 2) { return 2; } // TWO PAIRS else if (pairs == 4) { return 7; } // 4 OF A KIND } } else // Hands without repeated ranks { if (SameSuit(hand)) // Check if all cards have the same suit { if (IsSequence(hand)) // Check if hand is a straight { if (IsRoyal(hand[0])) { return 9; } // ROYAL FLUSH else { return 8; } // STRAIGHT FLUSH } else { return 5; } // FLUSH } else { if (IsSequence(hand)) { return 4; } // STRAIGHT else { return 0; } // HIGH CARD } } return 0; }
int main(int argc, char const *argv[]) { /* code */ int n, k; scanf("%d %d", &n, &k); int * number_array = (int *) malloc (n * sizeof(int)); for (int i = 0; i < n; i++) { scanf("%d", &number_array[i]); } printf("%d\n", Pairs(number_array, n, k)); return 0; }