#D0952. 反子序列
反子序列
反子序列
题目描述
33DAI 有一袋字符。他给了 Tom 三个东西:
- 一个整数 ,表示他要拼出的字符串长度;
- 一袋字符,也就是 种字符各自有多少个;
- 一个字符串 。
33DAI 要用袋子里的字符(每个字符最多用一次,可以不全部用完)拼出一个长度恰好为 的字符串 ,使得 是 的子序列。
Tom 想让 33DAI 拼出的字符串字典序最小。请你帮他求出这个字符串;如果拼不出来,输出 。
- 子序列:从 中删掉若干个字符(可以删 个),剩下的字符按原顺序拼成的字符串。
- 例如
abc的子序列有a、c、ac、abc、bc等,但ca不是。- 字典序:从第一个字符开始逐个比较,第一个不同的字符较小的那个字符串更小;如果一个是另一个的前缀,则短的更小。
输入格式
第一行三个整数 ,分别表示要拼的长度、有几种字符、 的长度。
接下来 行,每行一个字符 和一个整数 ,表示袋子里有 个字符 。
最后一行一个长度为 的字符串 ( 时这一行是空行)。
输出格式
一行:字典序最小的满足条件的字符串;若无解,输出 。
样例
4 1 0
a 4
aaaa
4 3 2
a 1
b 1
c 2
ab
abcc
样例说明
样例 1: 只有字符 a,有 个,要拼长度 ,目标串是空串(空串是任何字符串的子序列)。唯一的拼法是 aaaa。
样例 2: abcc
数据范围
对于全部数据,,,, 均为小写英文字母且互不相同,,所有 之和不超过 。
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
每个子任务的计分方式为 min(取该子任务中所有测试点的最低分)。
子任务之间存在依赖:子任务 2 依赖子任务 1,子任务 3 依赖子任务 2。即只有通过了所依赖的子任务,该子任务才能得分。