#CF2007B. Index 与最大值
Index 与最大值
B. Index 与最大值
时间限制:1 秒
内存限制:256 MB
在生日派对上收到又一个整数数组 后,Index 决定对它执行一些操作。
具体来说,她将按顺序执行 个操作。每个操作属于以下两种类型之一:
- + l r:给定两个整数 和 ,对于所有满足 的 ,执行 。
- - l r:给定两个整数 和 ,对于所有满足 的 ,执行 。
例如,如果初始数组 ,在执行操作 + 2 4 后,数组变为 。然后,在执行操作 - 1 10 后,数组变为 。
Index 对数组 中的最大值很好奇。请帮助她在每次操作后找出这个最大值。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 ()—— 测试用例的数量。
每个测试用例的第一行包含两个整数 和 (,)—— 数组的长度和操作的数量。
每个测试用例的第二行包含 个整数 ()—— 初始数组 。
接下来的 行,每行对应一个操作,格式为:c l r(, 和 是整数,)—— 操作的描述。
注意:经过一些操作后,元素 可能不再满足 ,如示例所示。
数据保证:所有测试用例的 之和不超过 ,所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一行,包含 个整数,第 个整数表示第 次操作后数组的最大值。
示例
输入
5
5 5
1 2 3 2 1
+ 1 3
- 2 3
+ 1 2
+ 2 4
- 6 8
5 5
1 3 3 4 5
+ 1 4
+ 2 3
- 4 5
- 3 3
- 2 6
5 5
1 1 1 1 1
+ 2 3
- 4 5
+ 1 6
- 2 5
+ 1 8
1 1
1
- 1 1
1 1
1000000000
+ 1000000000 1000000000
输出
4 4 4 5 5
5 5 4 4 3
1 1 2 1 2
0
1000000001
样例解释
第一个测试用例:操作过程如下:
- 第一次操作后,数组变为 ,最大值为 。
- 第二次操作后,数组变为 ,最大值为 。
- 第三次操作后,数组变为 ,最大值为 。
- 第四次操作后,数组变为 ,最大值为 。
- 第五次操作后,数组变为 ,最大值为 。
第二个测试用例:操作过程如下:
- 第一次操作后,数组变为 ,最大值为 。
- 第二次操作后,数组变为 ,最大值为 。
- 第三次操作后,数组变为 ,最大值为 。
- 第四次操作后,数组变为 ,最大值为 。
- 第五次操作后,数组变为 ,最大值为 。