fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n;
  5. vector<int> arr;
  6. long long iter;
  7.  
  8. void solve1(int r) {
  9. for (int p = 0; p < n / 2; ++p) {
  10. int q = n - 1 - p;
  11. int a = arr[p];
  12. int b = arr[q];
  13.  
  14. if (r == 0) {
  15.  
  16. } else if (r == 1) {
  17. arr[p] = a ^ b;
  18. arr[q] = a;
  19. } else {
  20. arr[p] = b;
  21. arr[q] = a ^ b;
  22. }
  23. }
  24. }
  25.  
  26. void solve2(long long fb) {
  27. if (n % 2 == 1 && fb > 0) {
  28. arr[n / 2] = 0;
  29. }
  30. }
  31.  
  32. void solve3(int rm) {
  33. for (int i = 0; i < rm; ++i) {
  34. int i1 = i % n;
  35. int i2 = n - i1 - 1;
  36. arr[i1] ^= arr[i2];
  37. }
  38. }
  39.  
  40. vector<int> solve() {
  41. if (n == 0 || iter == 0) return arr;
  42.  
  43. long long fb = iter / n;
  44. int rm = (int)(iter % n);
  45. int r = (int)(fb % 3);
  46.  
  47. solve1(r);
  48. solve2(fb);
  49. solve3(rm);
  50.  
  51. return arr;
  52. }
  53.  
  54. int main() {
  55. ios::sync_with_stdio(false);
  56. cin.tie(nullptr);
  57.  
  58. cin >> n;
  59. arr.resize(n);
  60. for (int i = 0; i < n; ++i) {
  61. cin >> arr[i];
  62. }
  63. cin >> iter;
  64.  
  65. auto res = solve();
  66.  
  67. for (int x : res) {
  68. cout << x << "\n";
  69. }
  70.  
  71. return 0;
  72. }
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Standard output is empty