#include<bits/stdc++.h> using namespace std; typedef long long ll; int twe[10000009]; void swap(int a, int b) { int p = twe[a]; twe[a] = twe[b]; twe[b] = p; } void tasoj(int p, int k) { if(p == k - 1) swap(p, k); else { int s = (p + k) / 2; tasoj(p, s); tasoj(1 + s, k); for(int i = 0; i <= s - p; ++i) swap(p + i, s + i + 1); } } int main() { ll n,t; scanf("%lld%lld", &n, &t); n = 1 << n; for(int i = 0; i < n; ++i) scanf("%d", &twe[i]); if (t % 2) tasoj(0, n - 1); for(int i = 0; i < n; ++i) printf("%d ", twe[i]); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include<bits/stdc++.h> using namespace std; typedef long long ll; int twe[10000009]; void swap(int a, int b) { int p = twe[a]; twe[a] = twe[b]; twe[b] = p; } void tasoj(int p, int k) { if(p == k - 1) swap(p, k); else { int s = (p + k) / 2; tasoj(p, s); tasoj(1 + s, k); for(int i = 0; i <= s - p; ++i) swap(p + i, s + i + 1); } } int main() { ll n,t; scanf("%lld%lld", &n, &t); n = 1 << n; for(int i = 0; i < n; ++i) scanf("%d", &twe[i]); if (t % 2) tasoj(0, n - 1); for(int i = 0; i < n; ++i) printf("%d ", twe[i]); return 0; } |