#include<bits/stdc++.h> #define MAX 5000001 using namespace std; long long int n,t,x=1,a[MAX]={0},s=1,b[MAX]={0}; void pot() { for(int i=1;i<=n;i++) { x=x*2; } } int main() { scanf("%lld",&n); scanf("%lld",&t); pot(); if(t%2==0) { for(int i=1;i<=x;i++) { scanf("%lld",&a[i]); printf("%lld ",a[i]); } } else { for(int i=1;i<=x;i++) { scanf("%lld",&a[i]); } for(int i=((3*x)/4)+1;i<=x;i++) { b[s]=a[i]; s++; } for(int i=(x/2)+1;i<=((3*x)/4);i++) { b[s]=a[i]; s++; } for(int i=(x/4)+1;i<=x/2;i++) { b[s]=a[i]; s++; } for(int i=1;i<=x/4;i++) { b[s]=a[i]; s++; } for(int i=1;i<=x;i++) { printf("%lld ",b[i]); } } }
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<bits/stdc++.h> #define MAX 5000001 using namespace std; long long int n,t,x=1,a[MAX]={0},s=1,b[MAX]={0}; void pot() { for(int i=1;i<=n;i++) { x=x*2; } } int main() { scanf("%lld",&n); scanf("%lld",&t); pot(); if(t%2==0) { for(int i=1;i<=x;i++) { scanf("%lld",&a[i]); printf("%lld ",a[i]); } } else { for(int i=1;i<=x;i++) { scanf("%lld",&a[i]); } for(int i=((3*x)/4)+1;i<=x;i++) { b[s]=a[i]; s++; } for(int i=(x/2)+1;i<=((3*x)/4);i++) { b[s]=a[i]; s++; } for(int i=(x/4)+1;i<=x/2;i++) { b[s]=a[i]; s++; } for(int i=1;i<=x/4;i++) { b[s]=a[i]; s++; } for(int i=1;i<=x;i++) { printf("%lld ",b[i]); } } } |