#include <algorithm>
#include <iostream>
#include <utility>
std::pair<int, int> get_min_max(int n1, int n2)
{
if (n1 < n2) {
return {n1, n2};
} else {
return {n2, n1};
}
}
std::pair<int, int> get_min_max(int n1, int n2, int n3, int n4, int n5)
{
auto p1 = get_min_max(n1, n2);
auto p2 = get_min_max(n3, n4);
auto mini = get_min_max(p1.first, p2.first).first;
auto maxi = get_min_max(p1.second, p2.second).second;
if (n5 < mini) {
return {n5, maxi};
} else if (maxi < n5) {
return {mini, n5};
} else {
return {mini, maxi};
}
}
int main()
{
int array[] = {1, 2, 3, 4, 5};
do {
auto p = get_min_max(array[0], array[1], array[2], array[3], array[4]);
if (p.first != 1 || p.second != 5) {
std::cout << "error in method get_min_max" << std::endl;
return -1;
}
} while (std::next_permutation(std::begin(array), std::end(array)));
auto p = get_min_max(3, 2, 5, 1, 4);
std::cout << p.first << " " << p.second << std::endl;
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnN0ZDo6cGFpcjxpbnQsIGludD4gZ2V0X21pbl9tYXgoaW50IG4xLCBpbnQgbjIpCnsKICAgIGlmIChuMSA8IG4yKSB7CiAgICAgICAgcmV0dXJuIHtuMSwgbjJ9OwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4ge24yLCBuMX07CiAgICB9Cn0KCnN0ZDo6cGFpcjxpbnQsIGludD4gZ2V0X21pbl9tYXgoaW50IG4xLCBpbnQgbjIsIGludCBuMywgaW50IG40LCBpbnQgbjUpCnsKICAgIGF1dG8gcDEgPSBnZXRfbWluX21heChuMSwgbjIpOwogICAgYXV0byBwMiA9IGdldF9taW5fbWF4KG4zLCBuNCk7CiAgICBhdXRvIG1pbmkgPSBnZXRfbWluX21heChwMS5maXJzdCwgcDIuZmlyc3QpLmZpcnN0OwogICAgYXV0byBtYXhpID0gZ2V0X21pbl9tYXgocDEuc2Vjb25kLCBwMi5zZWNvbmQpLnNlY29uZDsKICAgIGlmIChuNSA8IG1pbmkpIHsKICAgICAgICByZXR1cm4ge241LCBtYXhpfTsKICAgIH0gZWxzZSBpZiAobWF4aSA8IG41KSB7CiAgICAgICAgcmV0dXJuIHttaW5pLCBuNX07CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB7bWluaSwgbWF4aX07CiAgICB9Cn0KCmludCBtYWluKCkKewoJaW50IGFycmF5W10gPSB7MSwgMiwgMywgNCwgNX07CgkKCWRvIHsKCQlhdXRvIHAgPSBnZXRfbWluX21heChhcnJheVswXSwgYXJyYXlbMV0sIGFycmF5WzJdLCBhcnJheVszXSwgYXJyYXlbNF0pOwoJCQoJCWlmIChwLmZpcnN0ICE9IDEgfHwgcC5zZWNvbmQgIT0gNSkgewoJCQlzdGQ6OmNvdXQgPDwgImVycm9yIGluIG1ldGhvZCBnZXRfbWluX21heCIgPDwgc3RkOjplbmRsOwoJCQlyZXR1cm4gLTE7CgkJfQoJfSB3aGlsZSAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKHN0ZDo6YmVnaW4oYXJyYXkpLCBzdGQ6OmVuZChhcnJheSkpKTsKICAgIGF1dG8gcCA9IGdldF9taW5fbWF4KDMsIDIsIDUsIDEsIDQpOwoKICAgIHN0ZDo6Y291dCA8PCBwLmZpcnN0IDw8ICIgIiA8PCBwLnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQo=