#RB26CJ103. 张老师的淘汰赛

    ID: 4443 Type: Default File IO: trials 1000ms 512MiB Tried: 11 Accepted: 2 Difficulty: 4 Uploaded By: Tags>其他分治基础算法排序模拟

张老师的淘汰赛

题目描述

又到了一年一度的 ACM−ICPCACM-ICPC 邀请赛时间,又要派出队伍去参加啦!

但是今年想参加的同学人数实在是太多了,于是张老师决定让他们参加一次内部选拔赛

经过统计,张老师发现参赛人数恰好为 2n2^n 位选手,于是他给他们依次编号为 1∼2n1 \sim 2^n,其中第 ii 位同学的实力为 aia_i

为了能够快速进行选拔,所以张老师决定进行 nn 轮选拔赛,选拔系数设定为 MM,比赛规则如下:

  1. 第 ii 轮比赛时,分组人数为 len=2ilen=2^i,也就是会让编号为 1∼len1 \sim len 的选手为第一组,编号为 len+1∼2∗lenlen+1 \sim 2 * len 的选手为第二组 …\dots,形式化的来说,也就是每 lenlen 名选手为一组(包括被淘汰的)

  2. 在划分完组以后,对于某一组来说,将组内 未被淘汰 的选手实力从高到低进行排序,然后这个组内排名 >M> M 的选手会在本轮被淘汰(若组内人数 ≤M\leq M,则本组本轮全员保留)

  3. 对于第 ii 轮比赛,在本轮所有组比赛结束后,剩余未淘汰的选手总数为 KK,那么在本轮被淘汰的所有选手 最终比赛排名 即为 K+1K+1

  4. 当第 nn 轮比赛结束后,所有未被淘汰的选手在当前组内的排名即为他的 最终比赛排名

现在张老师想知道,所有选手的 最终比赛排名 是多少。

输入格式

输入第一行包含两个整数 n,Mn,M,含义如题

输入第二行包含 2n2^n 个整数,分别表示 a1,a2,a3…a2na_1,a_2,a_3 \dots a_{2^n}

输出格式

输出一行包含 2n2^n 个整数,依次表示 1∼2n1 \sim 2^n 每名选手的最终比赛排名

样例 1

3 2
1 7 3 2 8 5 6 4
5 2 3 5 1 5 3 5

样例解释1

第一轮比赛分组为:[1,7],[3,2],[8,5],[6,4][1,7],[3,2],[8,5],[6,4],本轮无人淘汰

第二轮比赛分组为:[1,7,3,2],[8,5,6,4][1,7,3,2],[8,5,6,4] 第一组淘汰编号为 1,41,4 的选手,第二组淘汰编号为 6,86,8 的选手,这四位选手的最终排名为 55

第三轮比赛分组为 [(1),7,3,(2),8,(5),6,(4)][(1),7,3,(2),8,(5),6,(4)](用括号表示被淘汰的选手) 被淘汰的选手为 3,73,7,这两位选手的最终排名为 33

最后剩下的 2,52,5 两位选手组内排名分别为 2,12,1,这就是他们的最终排名

样例 2

3 3
1 7 3 2 8 5 6 4
7 2 4 4 1 4 3 7

数据范围

测试点 数据范围
1∼31\sim 3 n,M≤3n, M \leq 3
4∼164\sim 16 n≤17n \leq 17
17∼2017\sim 20 n≤20n \leq 20

对于所有数据满足 n≤20,M≤2n,1≤ai≤109n \leq 20, M \leq 2^n, 1 \leq a_i \leq 10^9,并且保证所有选手的实力值 aia_i 互不相同