#P11603. [PA 2016] 洗牌 / Tasowanie

[PA 2016] 洗牌 / Tasowanie

背景

译自 Potyczki Algorytmiczne 2016 R1 Tasowanie [B] (TAS)。

题目描述

给定 2n2^n 张牌,每张牌上写着一个正整数。第 ii 张牌上写着的正整数为 aia_i。

考虑如下的洗牌过程:

  • 若要洗的牌的数量为 11,则什么都不做。
  • 否则,设牌的数量为 2k2^k。
    • 递归地洗第 1∼2k−11\sim 2^{k-1} 张牌,以及第 2k−1+1∼2k2^{k-1}+1\sim 2^k 张牌;
    • 将洗过的第 2k−1+1∼2k2^{k-1}+1\sim 2^k 张牌放在洗过的第 1∼2k−11\sim 2^{k-1} 张牌前面。

用以上的过程洗好第 1∼2n1\sim 2^n 张牌称为一次洗牌。

给定正整数 tt。求出洗了 tt 次牌后,第 1∼2n1\sim 2^n 张牌上写着的数字分别是什么。

输入格式

第一行,两个正整数 n,tn,t。

第二行,2n2^n 个正整数 a1,a2,⋯ ,a2na_1,a_2,\cdots,a_{2^n}。

输出格式

2n2^n 个正整数,描述洗牌后每张牌上的数字。

2 1
2 4 1 5
5 1 4 2

提示

  • 1≤n≤201\le n\le 20;
  • 1≤t,ai≤1091\le t,a_i\le 10^9。