#P3728. 曼哈顿序列

曼哈顿序列

Description

序列生成器的工作流程如下:

  • will先钦定了一个母序列,长度为N,序列里都是小写字母。

  • 子序列定义为:将母序列在任意位置删掉零或多个字符剩下的非空序列。例如:ab和ac是abc的子序列,但ca不是。

  • 显然,长度为N的序列有2N12^N-1个子序列。

  • 将这2N12^N-1个子序列按照字典序排列。will会按照字典序依次生成子序列。

  • will希望去掉重复的子序列,如果几个子序列重复(按照字典序大小相等),只生成一个。

  • 现在,他想知道,生成器第K次生成的子序列是什么?

Input Format

  • 第一行两个正整数N,K。N表示母序列长度,K表示询问;

  • 接下来一行N个小写字母,表示母序列;

Output Format

  • 一行若干个小写字母表示一个序列,为生成器第K次生成的序列。
3 3
abb

abb

3 5
abb

bb

Hint

样例的解释

对于母序列abb,有7个子序列,按字典序排列:

  • a
  • ab
  • ab
  • abb
  • b
  • b
  • bb

去重后的第3个是abb;

数据范围

  • 对于20%的数据,N15N\leq 15

  • 对于50%的数据,N1000N\leq 1000

  • 对于80%的数据,N200000N\leq 200000

  • 对于100%的数据,N1000000,K109N\leq 1000000, K\leq 10^9,且保证存在第K次的输出;

  • 前80%数据的时限为1s,后20%的数据时限为2s。