小红的01串
题号:NC313695
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红有一个长为 n\texttt{01} 串,她需要处理 q 次如下操作:
\hspace{23pt}\bullet 操作一:将第 x 位反转(即 \texttt{0}\texttt{1}\texttt{1}\texttt{0})。
\hspace{23pt}\bullet 操作二:查询 \texttt{01} 串中最多能选择多少个互不重叠的长为 x 的全 \texttt{0} 子串。

输入描述:

\hspace{15pt}第一行输入两个整数 n,q\left(1 \leqq n,q \leqq 10^5 \right)
\hspace{15pt}第二行输入一个长为 n\texttt{01} 串。
\hspace{15pt}之后的 q 行,每行输入两个整数 op_i,x_i\left( op_i \in \left[1, 2 \right],1 \leqq x_i \leqq n\right) 代表一次操作:若第一个数为 1 则代表进行了操作一;否则进行操作二。
\hspace{15pt}特殊的,保证至少会进行一次操作二。

输出描述:

\hspace{15pt}对于每次操作二,新起一行,输出查询的结果。
示例1

输入

复制
8 3
00010010
2 2
1 4
2 2

输出

复制
2
3

说明

\hspace{15pt}对于初始串 00010010 可选择 \underline{00}01\underline{00}10
\hspace{15pt}修改一次后变为 00000010,可选择 \underline{00}\ \underline{00}\ \underline{00}10