#P3728. 曼哈顿序列

曼哈顿序列

题目背景

为了研究一类动态仙人掌图上基于完全可持久化后缀全局平衡树维护的按操作序分治的分支定界启发式带花树上下界最小费用流最后输出两点曼哈顿距离的问题,will需要生成一些字母序列。

在写生成器的过程中,因为will太弱了,他遇到了一些问题。现在,需要机智的你来帮他解决这些问题。

题目描述

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

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

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

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

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

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

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

输入格式

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

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

输出格式

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

abb

3 5
abb

bb

提示

样例的解释

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

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

去重后的第 3 个是 abb;

数据范围

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

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

  • 对于 80%80\% 的数据,N2×105N\leq 2\times 10^5

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

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