#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
int main() {
std::vector<int> data{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> sample_result(3);
// Check for the presence of the __cpp_lib_sample macro (appeared in C++17)
#if __cpp_lib_sample
std::cout << "Using std::sample from C++17." << std::endl;
std::sample(data.begin(), data.end(), sample_result.begin(), sample_result.size(), std::mt19937{std::random_device{}()});
#else
std::cout << "std::sample is not supported. Using alternative method." << std::endl;
// Alternative code for older standards (e.g., manual shuffle and copy)
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(data.begin(), data.end(), g);
std::copy_n(data.begin(), sample_result.size(), sample_result.begin());
#endif
std::cout << "Selected elements: ";
for (int n : sample_result) {
std::cout << n << " ";
}
std::cout << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cmFuZG9tPgoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGRhdGF7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICAgc3RkOjp2ZWN0b3I8aW50PiBzYW1wbGVfcmVzdWx0KDMpOwoKICAgIC8vIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIF9fY3BwX2xpYl9zYW1wbGUgbWFjcm8gKGFwcGVhcmVkIGluIEMrKzE3KQojaWYgX19jcHBfbGliX3NhbXBsZQogICAgc3RkOjpjb3V0IDw8ICJVc2luZyBzdGQ6OnNhbXBsZSBmcm9tIEMrKzE3LiIgPDwgc3RkOjplbmRsOwogICAgc3RkOjpzYW1wbGUoZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpLCBzYW1wbGVfcmVzdWx0LmJlZ2luKCksIHNhbXBsZV9yZXN1bHQuc2l6ZSgpLCBzdGQ6Om10MTk5Mzd7c3RkOjpyYW5kb21fZGV2aWNle30oKX0pOwojZWxzZQogICAgc3RkOjpjb3V0IDw8ICJzdGQ6OnNhbXBsZSBpcyBub3Qgc3VwcG9ydGVkLiBVc2luZyBhbHRlcm5hdGl2ZSBtZXRob2QuIiA8PCBzdGQ6OmVuZGw7CiAgICAvLyBBbHRlcm5hdGl2ZSBjb2RlIGZvciBvbGRlciBzdGFuZGFyZHMgKGUuZy4sIG1hbnVhbCBzaHVmZmxlIGFuZCBjb3B5KQogICAgc3RkOjpyYW5kb21fZGV2aWNlIHJkOwogICAgc3RkOjptdDE5OTM3IGcocmQoKSk7CiAgICBzdGQ6OnNodWZmbGUoZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpLCBnKTsKICAgIHN0ZDo6Y29weV9uKGRhdGEuYmVnaW4oKSwgc2FtcGxlX3Jlc3VsdC5zaXplKCksIHNhbXBsZV9yZXN1bHQuYmVnaW4oKSk7CiNlbmRpZgoKICAgIHN0ZDo6Y291dCA8PCAiU2VsZWN0ZWQgZWxlbWVudHM6ICI7CiAgICBmb3IgKGludCBuIDogc2FtcGxlX3Jlc3VsdCkgewogICAgICAgIHN0ZDo6Y291dCA8PCBuIDw8ICIgIjsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCAnXG4nOwoKICAgIHJldHVybiAwOwp9Cg==