MuQ 的魔咒
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}在幻想乡中,一段魔咒的咏唱过程可以用一个长度为 n,仅由小写字母组成的的字符串 s 表示,而魔咒的力量可以用 s字典序^\texttt{[1]}来衡量:字典序越大,则魔咒蕴含的力量越大。
\hspace{15pt}MuQ 想尽可能地加强魔咒力量。但由于身体原因,MuQ 只想通过精简魔咒的方式来达成目标。

\hspace{15pt}现在,MuQ 想从 s 中选取恰好 k 个互不相交的非空子串^\texttt{[2]}。设选取的第 i 个子串为 [l_i, r_i],则应当同时满足:
\hspace{23pt}\bullet\,1 \leq l_i \leq r_i \leq n
\hspace{23pt}\bullet\,i \geq 2 时,l_i \ge r_{i - 1} + 1
\hspace{15pt}之后,MuQ 会把这些子串按原串中的顺序拼接成一个新的字符串,作为最终的魔咒。
\hspace{15pt}现在,你需要帮助 MuQ 最大化这段魔咒的力量。

【名词解释】
\hspace{15pt}字符串的字典序^\texttt{[1]}比较:从左到右逐个比较两个字符串的字符。如果在某个位置上字符不同,比较这两个字符的字母表顺序,字母序大的字符串字典序也大。如果一直比较到其中一个字符串结束,则较短的字符串字典序更小。
\hspace{15pt}子串^\texttt{[2]}:从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^5\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个正整数 n,k\left(1\le k \le n\le 5\times 10^5\right)
\hspace{15pt}第二行输入一个长度为 n,仅由小写字母组成的字符串 s,表示一段未精简的魔咒。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 5\times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出一个字符串,表示精简后的魔咒。
示例1

输入

复制
3
4 2
cbca
3 1
bca
5 4
abcde

输出

复制
cca
ca
bcde

说明

\hspace{15pt}对于第一组测试数据,可以选择子串 s[1..1]=\texttt{s[3..4]=\texttt{,按原顺序拼接得到 \texttt{,这是能取得的字典序最大的魔咒。

\hspace{15pt}对于第二组测试数据,可以选择子串 s[2..3]=\texttt{,拼接后为 \texttt{

\hspace{15pt}对于第三组测试数据,可以选择四个单字符子串 s[2..2]s[3..3]s[4..4]s[5..5](分别为 \texttt{\texttt{\texttt{\texttt{),拼接得到 \texttt{