#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]); } } } |
English