题库练习 Shuffling Cards with Problem Solver 68!
← 上一题 下一题 →

A16544 | Shuffling Cards with Problem Solver 68!

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

爱露喜欢玩纸牌游戏(扑克、德州扑克、Balatro 等),她已经掌握了洗牌的艺术,尤其是完美的洗牌技巧。现在她正在和睦月一起玩游戏,该由她洗牌了!

然而,睦月知道爱露的洗牌技巧实在太完美了。实际上,给定一副偶数张的牌,爱露总是进行完美的洗牌:她将牌组等分成两份,然后交错地合并在一起。形式上,如果牌堆用长度为 $n$ 的字符串 $s$ 表示,其中 $s_i$ 表示从顶端开始的第 $i$ 张牌,那么一次洗牌后得到的新牌堆为
$$ s' = s_1 + s_{n/2 + 1} + s_2 + s_{n/2 + 2} + \ldots + s_{n/2} + s_n。 $$
睦月还知道,每次爱露洗牌时都会精确地进行 $t$ 次洗牌。

现在睦月手上有一副 $2^k$ 张的牌,用一个字符串 $d$ 表示。在把牌组交给爱露之前,睦月可以选择切牌,也就是把牌顶的一部分牌移动到牌底。形式上,她可以任选 $m$,$0 \leq m \leq 2^k - 1$,得到新的牌堆
$$ d' = d_{m+1} + d_{m+2} + \ldots + d_{2^k} + d_1 + d_2 + \ldots + d_m。 $$

在这 $2^k$ 种切牌方式中,睦月希望选择一种,使得经过爱露洗牌 $t$ 次后,最终得到的牌堆字典序最小。你能帮她找到这个结果吗?

输入格式

第一行包含两个整数 $k$ 和 $t$,表示牌组的规模参数和爱露洗牌的次数。

第二行包含一个长度为 $2^k$ 的小写字母字符串 $d$,表示睦月手里的原始牌堆。

- $1 \leq k \leq 18$
- $0 \leq t \leq 10^9$

输出格式

输出一行,表示在睦月先切牌、爱露洗牌 $t$ 次后,最终可能获得的字典序最小的牌堆。

输入输出样例

输入 #1
4 2
baaabaaabaaabaaa
输出 #1
aaaaaaaaaaaabbbb
C++ 编辑器
输入
输出