问题描述
随着时间流逝,回忆总会不断变得美好。
你还记得 n 件过去的事情,你给它们编号依次为 1 到 n,每件事情有一个美好的程度ai,初始所有 ai 都为 0。
随着时间的流逝,事件会逐渐变得更加美好,每次会使得编号在区间 [l,r] 中所有美好值 ai=x 的时间美好值 ai 变为 x+1
当然,你也会回忆,每次你会回忆编号在一段区间 [l,r] 中美好值最大的事件,你想知道这个事件的美好值为多少。
即总共有 q 次操作,每次操作为以下两种之一:
1 l r x:将序列中区间 [l,r] 中值为 x 的元素变为 x+1。
2 l r:求区间 [l,r] 中的最大值。
输入描述
第一行两个正整数 n,q ,表示事件个数,和询问个数。
接下来 q 行每行为 1 l r x 或者 2 l r,意义如上。
输出描述
对于每个 2 l r 的操作,输出一行一个整数表示区间最大值。
5 5
1 3 5 0
1 1 4 1
1 1 5 2
2 2 2
2 4 5
0
3
样例解释 1
最开始序列为 0,0,0,0,0
第一次操作后为 0,0,1,1,1
第二次操作后为 0,0,2,2,1
第三次操作后为 0,0,3,3,1
所以区间 [2,2] 最大值为 0,区间 [4,5] 最大值为 3。
数据范围和说明
保证 1≤l≤r≤n,0≤x≤q。
测试点编号 |
数据约束 |
特殊约束 |
1−4 |
1≤n,q≤3000 |
|
5−6 |
1≤n,q≤105 |
1 操作的次数 ≤10 |
7−8 |
保证 2 操作的次数 ≤100 且所有 2 操作都满足 l=r |
9−13 |
保证任何时刻序列最大值不超过 30 |
14−16 |
|
17−20 |
1≤n,q≤5×105 |
大样例
大样例下载