时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
本题转译自 [NOIP2007] 字符串的展开 。

对于给定由减号

、小写字母和数字组成的字符串

,我们认为减号是一种简写,在完整的输出时,需要用连续递增的字母或数字串替代其中的减号。例如,将

和

分别输出为

和

。

具体地,我们这样定义展开规则:当出现减号、且减号两侧为同类型的字符(都是小写字母或都是数字)、且右侧字符的

码大于左侧字符时,则需要展开该片段。

特别的,在本题中,展开规则还由一个三元组
)
额外控制:


控制展开方式:

当

且减号两侧均为字母时,使用对应字符的小写字母填充;两侧为其他情况时,无视这条规则;

当

且减号两侧均为字母时,使用对应字符的大写字母填充;两侧为其他情况时,无视这条规则;

当

时,不论减号两侧为什么,都使用与填充字符个数相同的星号

填充;


控制每个填充字符重复的次数:表示每一个填充的字符都需要重复

次。例如,当

时,子串

应扩展为

。减号两侧的字符不变。


控制是否逆序输出填充部分:

当

时,表示维持原有顺序;

当

时,表示采用逆序输出,注意这时仍然不包括减号两端的字符。例如当

时,子串

应扩展为

。

还需要注意以下特殊情况:

如果右侧字符是左侧字符的直接后继(如

或

),则只需删除减号;

如果右侧字符的

码小于等于左侧字符,则保持原样输出(包含减号)。
输入描述:
第一行输入三个整数
代表展开规则中的
。
第二行输入一个长度不超过
,由减号
、小写字母和数字组成的字符串
,代表需要展开的字符串。
输出描述:
在一行上输出一个字符串,代表展开后的答案。
示例1
输出
复制
abcsttuuvvw1234556677889s-4zz
说明
在这一组测试数据中,答案为
。
备注:

如果你需要

码相关的帮助,请参阅下表。