CF724D Dense Subsequence
题目描述
给定一个由小写英文字母组成的字符串 $s$ 和整数 $m$。
需要从该字符串中选取若干字符位置(注意是选择位置而非字符本身),使得所有长度为 $m$ 的连续子段都至少包含一个被选中的位置。
然后使用被选中的字符组成新字符串。必须使用所有被选位置的字符,但可以按任意顺序重新排列。
形式化地说,我们选择下标子序列 $1 \le i_1 < i_2 < \cdots < i_t \le |s|$。该序列需满足:对于所有 $j \in [1 ,|s| -m+1]$,必须存在至少一个被选下标属于区间 $[j, j + m - 1]$,即 $\exist k \in [1,t]$ 使得 $j \le i_k \le j + m - 1$。
接着我们取被选下标的任意排列 $p$,组成新字符串
$$
s_{i_{p_1}}s_{i_{p_2}}\cdots s_{i_{p_t}}.
$$
求通过此流程能获得的字典序最小的字符串。
输入格式
输入包括两行。
第一行包含单个整数 $m~(1 \le m \le 100 000)$。
第二行包含由小写英文字母组成的字符串 $s$。保证该字符串非空且长度不超过 $100 000$,同时保证数字 $m$ 不超过字符串 $s$ 的长度。
输出格式
输出一行,表示通过上述流程能获得的字典序最小的字符串。
说明/提示
第一个样例中,可以选择子序列 $\{3\}$ 并组成字符串 `a`。
第二个样例中,可以选择子序列 $\{1, 2, 4\}$(对应位置的字符是 `a`、`b` 和 `a`),将这些字符重新排列得到字符串 `aab`。