题目描述
我们称一个整数数组 d1,d2,…,dm 为好的,如果其长度为 0,或者对于任意 1≤i≤m,j=1∑idj 和 j=i∑mdj 都非负。其中 j=l∑rdj 表示 dl+dl+1+…+dr。
我们定义数组的 美丽值 为其最长 好的 子序列1的长度。
给定一个长度为 n 的数组 a,其元素仅由 −1 和 1 组成。
你需要处理 q 个查询,查询分为两种类型:
- 将元素 ap 替换为 −ap,其中 p 为查询参数;
- 查询由元素 [al,al+1,…,ar] 组成的数组的 美丽值,其中 (l,r) 为查询参数。
输入格式
第一行包含两个整数 n, q (1≤n,q≤5⋅105) —— 数组 a 的长度和查询的数量。
第二行包含 n 个整数 a1,a2,…,an (ai∈{−1,1}) —— 数组 a 的元素。
接下来的 q 行描述查询。第一个数字 typei (1≤typei≤2) 表示查询类型。类型为 1 的查询格式为 1 p (1≤p≤n),类型为 2 的查询格式为 2 l r (1≤l≤r≤n)。
输出格式
对于每个类型为 2 的查询,输出一行一个整数 —— 对应数组的美丽值。
输入输出样例 #1
输入 #1
5 4
1 1 1 -1 1
2 1 5
1 3
2 1 4
2 2 5
输出 #1
5
2
3
输入输出样例 #2
输入 #2
4 4
1 1 1 -1
2 1 2
2 2 4
2 3 3
2 3 4
输出 #2
2
2
1
1
说明/提示
1 数组 c 称为数组 b 的子序列,如果可以通过从 b 中删除若干元素(可能为零)得到 c。空数组是任何数组的子序列。
评分标准
- (2 分):对于所有 1≤i≤n,ai=(−1)i+1,且没有类型 1 的查询;
- (7 分):n≤16,且没有类型 1 的查询;
- (21 分):n,q≤100;
- (20 分):n,q≤3000;
- (27 分):n,q≤2⋅105,且没有类型 1 的查询;
- (14 分):n,q≤2⋅105;
- (9 分):无额外限制。