题号:NC213478
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
有一排整齐排列的n个砖(编号从0到n-1),要么是红色,要么是黑色。
作为一名优秀的建筑工人,你需要听从包工头的命令(悲催的命运)。
包工头有以下指令,你必须按照他的指令实施,指令如下:
0 l r 把第l到第r个砖中黑色的全部替换成红色的
1 l r 把第l到第r个砖中红色的全部替换成黑色的
2 l r 把第l到第r个砖中红色的全部替换成黑色的,黑色的全部替换成红色的
3 l r 查看第l到第r个砖中一共有多少个黑色的砖
4 l r 查看第l到第r个砖中最长连续的黑色的砖有多少个
对于他的指令,相应的替换操作,你需要默默执行;相应的查看操作,你需要输出一行一个数作为答案告知包工头。
输入描述:
输入数据第一行包括2个数,n和m,分别表示砖的个数和指令数量
第二行包括n个数,表示n个砖的初始状态
0代表红色的砖,1代表黑色的砖
接下来m行,每行3个数,op, a, b,(0<=op<=4,0<=a<=b<n)表示包工头指令的内容
输出描述:
对于每一个指令,输出一行,包括1个数,表示其问题的答案
示例1
输入
复制
10 10
0 0 0 1 1 0 1 0 1 1
1 0 2
3 0 5
2 2 2
4 0 4
0 3 6
2 3 7
4 2 8
1 0 5
0 5 6
3 3 9
备注:
1<=n, m<=100000