#include <cstdio> const int MAX = (1 << 20) + 10; int n, t; int A[MAX], B[MAX]; int rev(int x) { return x xor ((1 << n) - 1); } int main() { scanf("%d%d", &n, &t); for(int i = 0; i < 1 << n; i++) { scanf("%d", A + i); B[rev(i)] = A[i]; } if(t & 1) { for(int i = 0; i < 1 << n; i++) printf("%d ", B[i]); printf("\n"); } else { for(int i = 0; i < 1 << n; i++) printf("%d ", A[i]); printf("\n"); } }
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 | #include <cstdio> const int MAX = (1 << 20) + 10; int n, t; int A[MAX], B[MAX]; int rev(int x) { return x xor ((1 << n) - 1); } int main() { scanf("%d%d", &n, &t); for(int i = 0; i < 1 << n; i++) { scanf("%d", A + i); B[rev(i)] = A[i]; } if(t & 1) { for(int i = 0; i < 1 << n; i++) printf("%d ", B[i]); printf("\n"); } else { for(int i = 0; i < 1 << n; i++) printf("%d ", A[i]); printf("\n"); } } |