5993 - NOI:树套树:模板(线段树+STL)

通过次数

24

提交次数

126

时间限制 : 2 秒
内存限制 : 128 MB

给定一个长度为 n 的整数数组 a,需要处理 m 次操作,操作分为两种类型:

更新操作:将数组中第 l 个位置的元素修改为 r; 查询操作:给定区间 ([l, r]) 和整数 x,找出区间 ([l, r]) 中小于等于 (x-1) 的最大整数。若不存在这样的整数(即区间内所有数均大于等于 x),输出 (-0x3f3f3f3f)(负无穷)

输入

第一行输入两个整数 n 和 m((1 \le n, m \le 5 \times 10^4)),分别表示数组长度和操作次数。第二行输入 n 个整数 (a_1, a_2, \dots, a_n)((|a_i| \le 10^9)),表示初始数组。接下来 m 行,每行描述一个操作:若为更新操作(opt=1),格式为:1 l r,表示将第 l 个位置的元素改为 r;若为查询操作(opt=2),格式为:2 l r x,表示查询区间 ([l, r]) 中小于等于 (x-1) 的最大整数。

输出

对于每个查询操作,输出对应的结果。若不存在满足条件的数,输出-1061109567,就是-0x3f3f3f3f的十进制表示

样例

输入

5 4
1 3 5 7 9
2 1 5 6
1 3 4
2 1 5 6
2 2 4 3

输出

5
4
-1061109567

提示

(n, m ≤ 5e4)