#include <iostream>
#include <vector>
#include <algorithm>
template <typename It>
void SwapMinAndMax(It first, It last) {
auto position_of_min = std::min_element(first, last);
auto position_of_max = std::max_element(first, last);
std::swap(*position_of_min, *position_of_max);
}
template <typename E>
std::ostream& operator<<(std::ostream& ostream,
std::vector<E> const& elements) {
for (const auto& element : elements) {
ostream << element << " ";
}
return ostream;
}
int main() {
std::vector<int> array = {-1, 4, 7, 0, 5, 4, 8, 4, -22, 6};
std::cout << "Elements before swap:\n" << array;
SwapMinAndMax(std::begin(array), std::end(array));
std::cout << "\nElements after swap:\n" << array;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIEl0Pgp2b2lkIFN3YXBNaW5BbmRNYXgoSXQgZmlyc3QsIEl0IGxhc3QpIHsKICBhdXRvIHBvc2l0aW9uX29mX21pbiA9IHN0ZDo6bWluX2VsZW1lbnQoZmlyc3QsIGxhc3QpOwogIGF1dG8gcG9zaXRpb25fb2ZfbWF4ID0gc3RkOjptYXhfZWxlbWVudChmaXJzdCwgbGFzdCk7CiAgc3RkOjpzd2FwKCpwb3NpdGlvbl9vZl9taW4sICpwb3NpdGlvbl9vZl9tYXgpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgRT4Kc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEU+IGNvbnN0JiBlbGVtZW50cykgewogIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICBvc3RyZWFtIDw8IGVsZW1lbnQgPDwgIiAiOwogIH0KICByZXR1cm4gb3N0cmVhbTsKfQoKaW50IG1haW4oKSB7CiAgc3RkOjp2ZWN0b3I8aW50PiBhcnJheSA9IHstMSwgNCwgNywgMCwgNSwgNCwgOCwgNCwgLTIyLCA2fTsKICBzdGQ6OmNvdXQgPDwgIkVsZW1lbnRzIGJlZm9yZSBzd2FwOlxuIiA8PCBhcnJheTsKICBTd2FwTWluQW5kTWF4KHN0ZDo6YmVnaW4oYXJyYXkpLCBzdGQ6OmVuZChhcnJheSkpOwogIHN0ZDo6Y291dCA8PCAiXG5FbGVtZW50cyBhZnRlciBzd2FwOlxuIiA8PCBhcnJheTsKfQo=