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`。