#include <algorithm>
#include <functional>
#include <iostream>
#include <tuple>
#include <vector>
int main() {
std::vector<int> first {5, 4, 3, 2, 1},
second {1, 2, 3, 4, 5},
third {6, 7, 8, 9, 10};
typedef std::tuple<int, int, int> Tuple;
std::vector<Tuple> tuples;
for (auto i = 0u; i < first.size(); ++i) {
tuples.push_back(std::make_tuple(first[i], second[i], third[i]));
}
for (const auto& item : tuples) {
std::cout << std::get<0>(item) << " "
<< std::get<1>(item) << " "
<< std::get<2>(item) << std::endl;
}
std::cout << std::endl;
std::sort(tuples.begin(), tuples.end(),
[](const Tuple& lhs, const Tuple& rhs) {
return std::get<0>(lhs) < std::get<0>(rhs);
});
for (const auto& item : tuples) {
std::cout << std::get<0>(item) << " "
<< std::get<1>(item) << " "
<< std::get<2>(item) << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjxpbnQ+IGZpcnN0IHs1LCA0LCAzLCAyLCAxfSwKCQlzZWNvbmQgezEsIDIsIDMsIDQsIDV9LAoJCXRoaXJkIHs2LCA3LCA4LCA5LCAxMH07CgkJCgl0eXBlZGVmIHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD4gVHVwbGU7CglzdGQ6OnZlY3RvcjxUdXBsZT4gdHVwbGVzOwoJZm9yIChhdXRvIGkgPSAwdTsgaSA8IGZpcnN0LnNpemUoKTsgKytpKSB7CgkJdHVwbGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfdHVwbGUoZmlyc3RbaV0sIHNlY29uZFtpXSwgdGhpcmRbaV0pKTsKCX0KCQoJZm9yIChjb25zdCBhdXRvJiBpdGVtIDogdHVwbGVzKSB7CgkJc3RkOjpjb3V0IDw8IHN0ZDo6Z2V0PDA+KGl0ZW0pIDw8ICIgIgoJCQk8PCBzdGQ6OmdldDwxPihpdGVtKSA8PCAiICIKCQkJPDwgc3RkOjpnZXQ8Mj4oaXRlbSkgPDwgc3RkOjplbmRsOwoJfQoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCQoJc3RkOjpzb3J0KHR1cGxlcy5iZWdpbigpLCB0dXBsZXMuZW5kKCksCgkJW10oY29uc3QgVHVwbGUmIGxocywgY29uc3QgVHVwbGUmIHJocykgewoJCQlyZXR1cm4gc3RkOjpnZXQ8MD4obGhzKSA8IHN0ZDo6Z2V0PDA+KHJocyk7CQoJCX0pOwoJCQoJZm9yIChjb25zdCBhdXRvJiBpdGVtIDogdHVwbGVzKSB7CgkJc3RkOjpjb3V0IDw8IHN0ZDo6Z2V0PDA+KGl0ZW0pIDw8ICIgIgoJCQk8PCBzdGQ6OmdldDwxPihpdGVtKSA8PCAiICIKCQkJPDwgc3RkOjpnZXQ8Mj4oaXRlbSkgPDwgc3RkOjplbmRsOwoJfQoJCglyZXR1cm4gMDsKfQ==