模拟 · 例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}具体地,我们这样定义展开规则:当出现一个减号时,若它不位于字符串的开头或结尾、且其两侧为同类型的字符(都是小写字母或都是数字)、且右侧字符的 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 控制每个填充字符重复的次数:即无论字符类型如何,每个待填充字符都要连续输出 p_2 次。例如,当 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\,如果右侧字符的 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 码相关的帮助,请参阅下表。