白山茶与红玫瑰
题号:NC50099
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

公元2019年6月22日,白山茶王国与红玫瑰王国展开大战,在世外仙境——天空花园处,双方军团一字排开,在维持一字长蛇阵的队形下双方战士陷入混战。
然而,为了操控整个战局,白山茶公主与红玫瑰女巫都会一种AOE魔法,使得受到魔法波及的战士"叛变"(白山茶战士变为红玫瑰战士,红玫瑰战士变为白山茶战士)。
可见,这场战争永远没有绝对的优劣势,局势瞬息万变。现在,白山茶公主邀请你协助她了解各个区块的战况。

输入描述:

第一行一个整数n( 0 < n <= 105),表示白山茶战士和红玫瑰战士的数量和。
第二行n个只包含0、1的整数,为一字长蛇阵中的战士类别(1为白山茶战士,0为红玫瑰战士,下标从1开始)。
第三行一个整数m(0 < m <= 100001),表示施放魔法和询问战况的操作次数。
随后m行,每行三个整数op,x,y: (op {0,1};1 <= x <= y <= n )
    对于op=1,表示对下标属于闭区间[x,y]的战士施放魔法,使她们"叛变";
    对于op=0,表示询问下标属于闭区间[x,y]的连续最多的白山茶战士的数目。
注:此题请不要使用多组输入!

输出描述:

对于每一次op=0的操作,输出区间内连续最多的白山茶战士数目。
示例1

输入

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

输出

复制
1
2
0

说明

0 1 4 : answer=1
1 2 3 : 1 1 0 0
0 1 4 : answer=2
1 3 3 : 1 1 1 0
0 4 4 : answer=0