diff options
Diffstat (limited to 'codechef/marm.cc')
-rw-r--r-- | codechef/marm.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/codechef/marm.cc b/codechef/marm.cc new file mode 100644 index 0000000..3866330 --- /dev/null +++ b/codechef/marm.cc @@ -0,0 +1,58 @@ +#include <iostream> +#include <vector> + +using namespace std; + +int +main() +{ + int t, n; + long k; + + cin >> t; + while (t--) + { + cin >> n >> k; + long d = k / n, m = k % n; + vector<long> a (n); + for (int i = 0; i < n; ++i) + cin >> a[i]; + + for (int i = 0; i < n / 2; ++i) + { + switch ((d + (m > i)) % 3) + { + case 1: + cout << (a[i] ^ a[n - i - 1]); + break; + case 2: + cout << a[n - i - 1]; + break; + default: + cout << a[i]; + } + cout << ' '; + } + + if (n % 2) + cout << ((d + (m > n >> 1)) ? 0 : a[n >> 1]) << ' '; + + for (int i = n - (n >> 1); i < n; ++i) + { + switch ((d + (m > i)) % 3) + { + case 1: + cout << a[n - i - 1]; + break; + case 2: + cout << (a[i] ^ a[n - i - 1]); + break; + default: + cout << a[i]; + } + cout << ((i + 1 == n) ? '\n' : ' '); + } + } + + return 0; +} |