luogu#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%的数据,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。