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
37
38
39
40
41
42
43
44
#include <stdio.h>

int two_power(int p) {
    if(p) {
        return two_power(p-1) << 1;
    }
    return 1;
}

void rev(int *a, int s) {
    int *aa, *bb, t;
    aa = a;
    bb = aa+s-1;
    while(aa < bb) {
        t = *aa;
        *aa = *bb;
        *bb = t;
        aa++;
        bb--;
    }
}

void print(int *a, int s) {
    int i;
    for(i=0; i<s; i++) {
        printf("%d ", *(a+i));
    }
    printf("\n");
}

int main() {
    int n, t, i, k;
    int arr[1048576];
    scanf("%d %d", &n, &t);
    k = two_power(n);
    for(i=0; i<k; i++) {
        scanf("%d", arr+i);
    }
    if(t % 2) {
        rev(arr, k);
    }
    print(arr, k);
    return 0;
}