题目描述
展览馆准备将所有展签排成一行。展签分为m种,用大写字母A、B、C、…依次表示。例如时,种类为A、B、C。
第i种展签有张,它的连续上限为:排列中任意连续相同的第i种字母,长度都不能超过。不同种类可以有不同的连续上限。你必须使用全部展签,同一种展签之间没有区别。
请在所有合法排列中,找出字典序最小的排列。如果不存在合法排列,输出-1。
这里比较的字符串长度都相同。找到从左到右第一个不同的位置,字母较小的字符串字典序较小,字母顺序为A < B < … < Z。例如AAB小于ABA。
输入格式
从文件label.in读入数据。
第一行包含一个正整数m。接下来m行,第i行包含一个非负整数和一个正整数。
输出格式
输出到文件label.out。
如果存在合法排列,输出一行,由所有展签对应的字母组成,表示字典序最小的合法排列,不含空格。否则输出一行-1。
样例1
样例输入:
3
2 1
3 2
1 1
样例输出:
ABABBC
排列使用了2张A、3张B和1张C;A、C都不能连续出现,B最多连续出现2次。
样例2
样例输入:
2
1 1
4 2
样例输出:
BBABB
虽然A比B小,但如果把A放在最前面,剩余4张B将连续出现。因此合法排列不能以A开头。
样例3
样例输入:
2
4 1
1 1
样例输出:
-1
一张B无法将四张A分隔到每段最多一张。
数据范围
令N表示所有的和。对于所有测试数据:,,,。为0时,仍会给出该种类的。
共20个测试点,每点5分,独立计分。
| 测试点 | 附加限制 |
|---|---|
| 1-4 | , |
| 5-8 | ,所有 |
| 9-12 | 每一种都满足 |
| 13-16 | 所有 |
| 17-20 | 无附加限制 |