#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
template <typename T, size_t N>
void swap_pairs(array<T, N>& arr)
{
bool is_odd = (N % 2 != 0);
auto limit = (is_odd? N - 2 : N - 1);
for (size_t i = 0; i < limit; i += 2) {
swap(arr[i], arr[i + 1]);
}
}
template <typename Container>
void print(const Container& c)
{
cout << "{ ";
for (const auto& x : c) {
cout << x << ' ';
}
cout << "}\n";
}
int main()
{
array<int, 6> arr_int = {
1, 2, 3, 4, 5, 6
};
array<double, 5> arr_double = {
10.5, 9.5, 8.5, 7.5, 6.5
};
print(arr_int);
swap_pairs(arr_int);
print(arr_int);
print(arr_double);
swap_pairs(arr_double);
print(arr_double);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgp2b2lkIHN3YXBfcGFpcnMoYXJyYXk8VCwgTj4mIGFycikKewoJYm9vbCBpc19vZGQgPSAoTiAlIDIgIT0gMCk7CglhdXRvIGxpbWl0ID0gKGlzX29kZD8gTiAtIDIgOiBOIC0gMSk7Cglmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbWl0OyBpICs9IDIpIHsKCQlzd2FwKGFycltpXSwgYXJyW2kgKyAxXSk7Cgl9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CnZvaWQgcHJpbnQoY29uc3QgQ29udGFpbmVyJiBjKQp7Cgljb3V0IDw8ICJ7ICI7Cglmb3IgKGNvbnN0IGF1dG8mIHggOiBjKSB7CgkJY291dCA8PCB4IDw8ICcgJzsKCX0KCWNvdXQgPDwgIn1cbiI7Cn0KCmludCBtYWluKCkgCnsKCWFycmF5PGludCwgNj4gYXJyX2ludCA9IHsKCQkxLCAyLCAzLCA0LCA1LCA2Cgl9OwoJYXJyYXk8ZG91YmxlLCA1PiBhcnJfZG91YmxlID0gewoJCTEwLjUsIDkuNSwgOC41LCA3LjUsIDYuNQoJfTsKCQoJcHJpbnQoYXJyX2ludCk7Cglzd2FwX3BhaXJzKGFycl9pbnQpOwoJcHJpbnQoYXJyX2ludCk7CgkKCXByaW50KGFycl9kb3VibGUpOwoJc3dhcF9wYWlycyhhcnJfZG91YmxlKTsKCXByaW50KGFycl9kb3VibGUpOwp9