#P16677. [Ctu2018]Locker Room

[Ctu2018]Locker Room

题目描述

Binary Casino 中有一些奇怪的房间,其中之一就是更衣室。

你每天至少需要进入更衣室两次,分别是在上班前和下班后。进入更衣室不需要钥匙或密码,因为门上安装了一套全新的安全锁系统。

每次你想进入更衣室时,锁都会生成一道谜题。潜在的入侵者往往需要很长时间才能解开它,而在赌场工作了一段时间的员工通常能够熟练解决。

这是你在赌场工作的第二周。由于没能及时解开谜题,你已经迟到了三次。于是,你决定编写一个程序来自动解决它。

谜题规则如下。

给定一个由 NN 个小写英文字母组成的环形字符串。需要选择若干个长度恰好为 KK 的连续子串,并标记这些子串中的字符,直到环形字符串中的每一个字符都至少被标记一次。

因为字符串是环形的,所以子串可以越过字符串末尾,并从字符串开头继续。

标记一个子串不会改变原字符串,同一个字符也可以被标记多次。

对于某一种选择方案,考察所有被选择子串中字典序最大的子串。锁要求输出这个子串。

你可以自由决定选择哪些子串。目标是使上述“所选子串中字典序最大的子串”在所有合法选择方案中尽可能小。

换句话说:

  • 先选择若干个长度为 KK 的环形子串,使它们覆盖全部 NN 个字符;
  • 设这些子串中字典序最大的一个为 TT
  • 在所有合法覆盖方案中,使 TT 的字典序最小;
  • 输出这个最小可能的 TT

例如,给定环形字符串 acdb,其中 N=4N=4K=3K=3

可以选择子串 acdbac

  • acd 覆盖原字符串中的前三个字符;
  • bac 越过字符串末尾,覆盖最后一个字符以及开头两个字符;
  • 所有字符均被覆盖;
  • 两个子串中字典序较大的是 bac

这个谜题的答案为 bac

输入格式

第一行包含两个整数 N,KN,K

1N5105,1KN,1\le N\le5\cdot10^5,\qquad 1\le K\le N,

分别表示环形字符串长度和每个被标记子串的长度。

第二行包含一个长度为 NN、仅由小写英文字母组成的字符串,表示给定环形字符串。

输出格式

输出一个长度为 KK 的字符串,表示所有合法覆盖方案中,能够得到的字典序最小的“最大被选子串”。

样例 1

输入

4 3
acdb

输出

bac

样例 2

输入

6 2
aababa

输出

ab

样例 3

输入

10 4
abaaabaaba

输出

aaba