#include #include #include #include #include using namespace std; void generate_random_numbers(vector& values) { for (int i = 0; i < values.size(); i++) { values[i] = i * 3; } auto rng = std::default_random_engine {}; std::shuffle(std::begin(values), std::end(values), rng); } template T select(vector a, int k) { sort(a.begin(), a.end()); return a[k]; } template bool isCorrect(vector a, int k, T kth) { int n = 0; for (T x : a) { if (x < kth) n++; } return n == k; } int main(){ // Generate a list of random numbers int size = 100; vector values(size); generate_random_numbers(values); // Some test values of k vector ks = {0, 5, 20, 30}; for (int k : ks) { int kth_value = select(values, k); EXPECT_TRUE(isCorrect(values, k, kth_value)); } cout << "End of program" << endl; return 0; }