模拟 · 例1-字符串展开
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题转译自 [NOIP2007] 字符串的展开 。
\hspace{15pt}对于给定由减号 \texttt{ 、小写字母和数字组成的字符串 s ,我们认为减号是一种简写,在完整的输出时,需要用连续递增的字母或数字串替代其中的减号。例如,将 \texttt{\texttt{ 分别输出为 \texttt{\texttt{
\hspace{15pt}具体地,我们这样定义展开规则:当出现减号、且减号两侧为同类型的字符(都是小写字母或都是数字)、且右侧字符的 \sf {Ascii} 码大于左侧字符时,则需要展开该片段。

\hspace{15pt}特别的,在本题中,展开规则还由一个三元组 \left(p_1,p_2,p_3\right) 额外控制:
\hspace{15pt}p_1 控制展开方式:
\hspace{23pt}\bullet\,p_1 = 1 且减号两侧均为字母时,使用对应字符的小写字母填充;两侧为其他情况时,无视这条规则;
\hspace{23pt}\bullet\,p_1 = 2 且减号两侧均为字母时,使用对应字符的大写字母填充;两侧为其他情况时,无视这条规则;
\hspace{23pt}\bullet\,p_1 = 3 时,不论减号两侧为什么,都使用与填充字符个数相同的星号 \texttt{ 填充;
\hspace{15pt}p_2 控制每个填充字符重复的次数:表示每一个填充的字符都需要重复 k 次。例如,当 p_2 = 3 时,子串 \texttt{ 应扩展为 \texttt{。减号两侧的字符不变。
\hspace{15pt}p_3 控制是否逆序输出填充部分:
\hspace{23pt}\bullet\,p_3 = 1 时,表示维持原有顺序;
\hspace{23pt}\bullet\,p_3 = 2 时,表示采用逆序输出,注意这时仍然不包括减号两端的字符。例如当 p_1 = 1;\ p_2 = 2;\ p_3 = 2 时,子串 \texttt{ 应扩展为 \texttt{

\hspace{15pt}还需要注意以下特殊情况:
\hspace{23pt}\bullet\,如果右侧字符是左侧字符的直接后继(如 \texttt{\texttt{ ),则只需删除减号;
\hspace{23pt}\bullet\,如果右侧字符的 \sf {Ascii} 码小于等于左侧字符,则保持原样输出(包含减号)。

输入描述:

\hspace{15pt}第一行输入三个整数 p_1,p_2,p_3\left(1\leq p_1\leq 3;\ 1\leq p_2\leq 8;\ 1\leq p_3\leq 2\right) 代表展开规则中的 p_1,p_2,p_3
\hspace{15pt}第二行输入一个长度不超过 100 ,由减号 \texttt{ 、小写字母和数字组成的字符串 s ,代表需要展开的字符串。

输出描述:

\hspace{15pt}在一行上输出一个字符串,代表展开后的答案。
示例1

输入

复制
1 2 1
abcs-w1234-9s-4zz

输出

复制
abcsttuuvvw1234556677889s-4zz

说明

\hspace{15pt}在这一组测试数据中,答案为 \texttt{
示例2

输入

复制
2 3 2
a-d-d

输出

复制
aCCCBBBd-d
示例3

输入

复制
3 4 2
di-jkstra2-6

输出

复制
dijkstra2************6

备注:

\hspace{15pt}如果你需要 \sf Ascii 码相关的帮助,请参阅下表。