#C0028. 交换密码 / password

交换密码 / password

题目描述

伞伞有一串由小写字母组成的魔法密码,他可以使用最多 kk交换魔法。每次魔法可以交换任意两个位置上的字母,但有一个限制:每个位置在整个过程中最多只能被交换一次

伞伞想把密码变得 字典序最大(也就是尽可能让前面的字母更大),请你帮他找到最终能得到的最大字符串。

输入格式

第一行两个整数 n,kn,k,分别表示字符串长度和最多可使用的魔法次数。

第二行一个长度为 nn 的字符串,表示初始密码。

输出格式

一行一个字符串,表示经过最多 kk 次交换(每个位置最多参与一次)后,能得到的字典序最大的字符串。

3 1
bab
bba
9 4
batcdwtwt
wwtttbdac

样例解释

对于第一组样例,交换最后两个字符即可。

对于第二组样例,由于每个位置只能被交换一次,因此选择交换以下四对位置:

(1,6),(2,8),(4,9),(5,7)(1,6),(2,8),(4,9),(5,7)

容易证明,这样交换能够得到的字符串的字典序最大。

数据规模与约定

下发文件

下发文件对应子任务 2,32,3

子任务编号 nn≤ kk≤ 分值
11 1010 3030
22 10310^3 10910^9
33 3×1063 \times 10^6 4040

对于 100%100\% 的数据:保证 1n3×106,1k1091 \leq n \leq 3 \times 10^{6},1 \leq k \leq 10^{9}