问题描述 |
---|
罗少的代码编辑器有不同的规则。 对于输入的一串括号包含小括号 当括号和光标呈$$\text{()I}$$时: 如果罗少按下键盘中的$$\text{BACKSPACE}$$按键,此时括号会变成$$\text{(I}$$。 如果罗少按下$$\text{DELETE}$$按键,此时括号不发生变化。 当括号和光标呈$$\text{I()}$$时: 如果罗少按下键盘中的$$\text{BACKSPACE}$$按键,此时括号不发生变化。 如果罗少按下$$\text{DELETE}$$按键,此时括号会变成$$\text{I)}$$。 当括号和光标呈$$\text{[I]}$$时: 如果罗少按下键盘中的$$\text{BACKSPACE}$$按键,如果光标左右的括号是匹配的(属于同一种括号的左括号和右括号)。那么这个括号的左括号和右括号会被同时删除,即变成$$\text{I}$$。否则只删除左侧的括号,即对于$$\text{(I]}$$按下$$\text{BACKSPACE}$$后会变为$$\text{I]}$$。 如果罗少按下$$\text{DELETE}$$键,如果左右括号匹配,此时删除的效果和$$\text{BACKSPACE}$$一样,括号会变为$$\text{I}$$。否则只删除右侧的括号,即对于$$\text{(I]}$$按下$$\text{DELETE}$$后会变为$$\text{(I}$$。 如果罗少按下方向键的$$\text{<}$$。此时光标会向左移动一位。按下$$\text{>}$$,光标会向右移动一位。 即对于$$\text{[(I)](()\{ \})}$$,当按下$$\text{<}$$时,括号会变成$$\text{[I()](()\{ \})}$$。当按下$$\text{>}$$时,括号会变成$$\text{[()I](()\{ \})}$$。 当光标位于边缘时继续移动其位置不发生变化。当没有括号时,按下$$\text{BACKSPACE}$$和$$\text{DELETE}$$不会有任何变化。 现在罗少希望经过$$q$$次操作之后的括号会变成什么样子。 |
输入描述 |
第一行输入一个正整数$$T$$表示有$$T$$组样例。 对于每一组样例第一行输入字符串的长度$$n$$和询问的次数$$q$$。($$1 \leq n, q \leq 2 \times 10^5$$) 对于接下的一行输入一个长度为$$n$$的字符串$$S$$。 接下来$$q$$行每行输入一个题目中描述的操作,包括$$\text{BACKSPACE,DELETE,<,>}$$。 题目保证所有$$n$$的和不超过$$2 \times 10^5$$。保证所有$$q$$的和不超过$$2 \times 10^5$$。 |
输出描述 |
对于每组样例输出操作后的括号(包含光标),然后换行。 |
样例输入复制样例 |
3 7 4 (([I])) BACKSPACE < DELETE > 6 3 (I)[}{ > > DELETE 6 5 [(}(I] BACKSPACE < BACKSPACE DELETE BACKSPACE |
样例输出 |
()I) ()[I{ I |
相关 |