01序列2
题号:NC16545
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个全为0或者1的序列

这个序列为一个长度为n的左边为高位的二进制串

m次操作两种类型

1.     输入一个数x 表示第x位取反

2.     输入两个数l,r 表示查询区间lr内有多少连续子区间在二进制下是3的倍数

输入描述:

第一行n m
第二行n个数每个数为0或者1表示序列
接下来m行每行输入一个数op
如果op为1则执行1操作,否则执行2操作

输出描述:

对于每个2操作输出一个数表示答案
示例1

输入

复制
5 5
0 1 1 1 0
2 2 5
1 4
2 1 4
1 5
2 3 5

输出

复制
4
6
1

备注:

n<=5e5
m<=5e5