有一个长度为nnn的括号序列seqseqseq,序列下标从111开始,你需要从中选择一个子序列,该子序列需要满足:
(())
()()()
假设选出的括号序列sss长度为lenlenlen,indexiindex_iindexi表示序列中第iii个括号在原序列中的下标,那么这个括号序列的优美度为:
其中"[]"内的内容代表需要满足的条件,即你选择的子括号序列中所有右括号在原序列中的下标和减去所有左括号在原序列中的下标和。
"[]"
现在有qqq次修改操作: pos c,即 seqpos:=cseq_{pos} := cseqpos:=c 。
pos c
你需要在每次修改操作后输出一个整数,代表在这次修改后你能取出的优美度最大的合法子序列的优美度。
请注意,每次修改操作会实际地修改括号序列。
第一行,两个整数 n,q(1≤n≤2⋅105;1≤q≤2⋅105)n,q(1\le n \le 2·10^5;1\le q \le 2·10^5)n,q(1≤n≤2⋅105;1≤q≤2⋅105)代表初始时括号序列的长度和修改操作的次数。
第二行,一个长度为nnn括号序列,不保证该括号序列是匹配的括号序列。
接下来连续的qqq行,每行两个整数 pos,c(1≤pos≤n;c是左括号或右括号)pos,c(1\le pos\le n;c是左括号或右括号)pos,c(1≤pos≤n;c是左括号或右括号),代表一次操作。
共qqq行,在每次操作后能输出可以取出的合法的优美度最大的子序列的优美度,如果取不出任何的合法的子序列,输出0。
0
输入样例:
5 2 ()))) 1 ) 2 (
输出样例:
0 3
样例解释: 第一次修改后,括号序列变为))))),选不出任何合法子序列。 第二次修改后,括号序列变为)())),选择下标222和555的括号作为当前子序列。
)))))
)()))