JSOI 教练组按如下规则定义配对的括号序列:
- ()是配对的括号序列。
- 若 A 是配对的括号序列,则(A)也是配对的括号序列。
- 若 A、B 是配对的括号序列,则 AB 也是配对的括号序列。
例如,以下是配对的括号序列:
(())()()((()()))、((((()))))、()()()()(())
以下则是不配对的括号序列:
)()()()()()(、(())(()、(())(()))()(()
繁多的括号总是让 JSOI 教练组看花眼,难以分辨一个很长的括号序列究竟是不是配对的,所以他请你编写一个程序,输入一个括号序列,并能够完成以下三种操作:
询问将 $A[x],A[x+1]…A[y]$ 形成的括号序列修改为配对的括号序列,至少需要修改多少个括号。
将 $A[x],A[x+1],…A[y]$ 的子序列执行反转,所有的 “(” 修改为 “)”、所有的 “)” 修改为 “(”。
将 $A[x],A[x+1],…A[y]$ 的子序列执行翻转,原子序列被 $A[y],A[y-1],…A[x]$ 替代。