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
// Tasowanie [B], Jakub Szczugiel
#include <bits/stdc++.h>

using namespace std;

void Tasuj(vector<int> &tab, int L, int R){
    if(R-L > 1){
        Tasuj(tab, L, (L+R)/2);
        Tasuj(tab, (L+R)/2 + 1, R);
    }
    int y = L, mid = (L+R)/2 + 1;
    while(y < mid) { swap(tab[y], tab[mid+y-L]); y++; }
}


int main(){
    ios_base::sync_with_stdio(0);
    int n, t, x;
    vector<int> tab;

    cin >> n >> t;
    int ile = (1<<n);

    for(int i = 0; i < ile; i++){
        cin >> x;
        tab.push_back(x);
    }

    if(t & 1) Tasuj(tab, 0, tab.size()-1);
    for(int i = 0; i < tab.size(); i++) cout << tab[i] << ' ';
}