一段报文配平,等价于两件事同时成立:从左端点起的前缀和始终不小于 0,并且整段的和等于 0。开符贡献 +1,合符贡献 −1。
一条报文写成字符串 w,一共 m 个字符。每个字符要么是开符 [,要么是合符 ]。
调度一共做 t 次动作,只有下面两类。
第一类给出两端 a,b,把第 a 个到第 b 个字符全部换成对面:[ 换成 ],] 换成 [。
第二类给出两端 a,b,问当前这一段是否配平。
配平的含义:从左往右扫描这一段,遇到 [ 就让计数加 1,遇到 ] 就让计数减 1。扫描途中计数始终不能小于 0,扫到末尾时计数必须回到 0。
例如 []、[[]]、[][] 都配平;][、[[]、][][ 都不配平。
首行一个正整数 m。
第二行一个正整数 t。满足 1≤m,t≤2×105。
第三行给出报文 w,长度恰好为 m,只含 [ 与 ]。
随后 t 行,每行三个整数 op,a,b。
位置从 1 数起,且 1≤a≤b≤m。
每个 op=2 单独占一行:配平写出 1,否则写出 0。
op=1 没有任何输出。
输入
6
4
[[][]]
2 1 6
1 1 2
2 1 6
2 4 5
输出
1
0
1
说明
[[][]] 的计数依次是 1,2,1,2,1,0,配平,输出 1。]]][]],一开头计数就是 −1,输出 0。[],输出 1。输入
8
5
][[]][][
2 2 7
1 1 1
2 1 8
1 8 8
2 1 8
输出
1
0
1
说明
[[]][],计数依次是 1,2,1,0,1,0,配平,输出 1。[[[]][][,扫完计数为 2,输出 0。[[[]][]],计数依次是 1,2,3,2,1,2,1,0,配平,输出 1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册