首页 > 试题广场 >

字符串和声!

[编程题]字符串和声!
  • 热度指数:301 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小歪正在学习字符串和声,字符串仅由小写字母和连接线 \texttt{`-'} 构成。我们使用竖线 \texttt{`|'} 来划分小结,例如,\texttt{|do-do-re|re---|} 代表两个小结,其中,第一个小结长度为 8 ,即 \texttt{;第二个小结长度为 5 ,即 \texttt{
\hspace{15pt}随后,我们定义字符串的和声为:字符串和声小节数量和各个小结的长度均与原字符串一致,唯一的区别是其会比原字符串晚 p 个长度出现,和声未出现时使用下划线替代空白位置,小结结束时未输出完整的和声会被直接截断;更具体地,先在每一个小节前面加上 p 条下划线,随后截取原来的小节的长度位,得到每一个小节的和声。例如,当 p=2 时,第一小节变为 \texttt{,再截取前 8 位,得到第一小节的和声 \texttt{,上方样例的和声最终可以唯一地表示为 \texttt{|__do-do-|__re-|}
\hspace{15pt}现在,对于给出的字符串和整数 p,请你直接输出和声!

输入描述:
\hspace{15pt}第一行输入两个整数 n,p \left( 1 \leqq n \leqq 3 \times 10^5;\ 0 \leqq p \leqq 10^9\right) 代表原字符串总长度(包括 \texttt{|} 在内)和和声延迟的长度。
\hspace{15pt}此后若干行,一共输入 n 个字符,代表原字符串。保证每行的首末均为竖线( \texttt{|} ),每个小结的长度至少为 1 ,小结中的字符仅为小写字母和连接线( \texttt{-} )。


输出描述:
\hspace{15pt}根据输入,输出若干行,代表和声字符串。
示例1

输入

16 2
|do-do-re|re---|

输出

|__do-do-|__re-|

说明

这个样例已经在题面中加以解释。
示例2

输入

15 0
|ciallo|
|-|
|--|

输出

|ciallo|
|-|
|--|
示例3

输入

7 2
|-|
|--|

输出

|_|
|__|
示例4

输入

16 2
|do-do-re|mi---|

输出

|__do-do-|__mi-|

说明

第一节和声:\texttt{do-do-re} 变为\texttt{__do-do-}
第二节和声:\texttt{mi---}变为\texttt{__mi-}

这道题你会答吗?花几分钟告诉大家答案吧!