题目描述
有一个初始为空的线段集,你需要处理 q 组询问,每组询问的格式为如下三种之一:
- 加入一条新线段 [li,ri]。
- 将线段集里所有与 [li,ri] 相交的线段修改为其与 [li,ri] 的交。
- 求出线段集里所有与 [li,ri] 相交的线段与 [li,ri] 的交的长度和。
两条线段 [a,b],[c,d] 相交,当且仅当 max{a,c}≤min{b,d},它们的交为 [max{a,c},min{b,d}]。
一条线段 [a,b] 的长度为 b−a。
在部分测试点中,你需要在线地进行这些操作。
注意:在本题中,线段可能退化为单点。
输入格式
第一行两个正整数 q 和 type,分别表示操作次数和强制在线参数。
接下来 q 行,每行三个正整数 opt,li′,ri′,其中 opt 表示操作类型。
我们记 last 表示上一次 3 询问的答案(last 初始为 0),则真实的 $l_i = ( l_i' + type \times last ) \bmod ( 2 \times 10^5 + 1 ), r_i = ( r_i' + type \times last ) \bmod ( 2 \times 10^5 + 1 )$。
数据保证 1≤li≤ri≤2×105。
输出格式
对于每个 3 询问,输出一行表示答案。
9 0
1 1 5
1 6 8
1 2 3
3 3 8
2 4 6
1 5 9
2 2 7
3 2 7
3 3 6
4
4
2
提示
【样例解释】
每次操作后的线段集:
- 第一次后:{[1,5]}
- 第二次后:{[1,5],[6,8]}
- 第三次后:{[1,5],[6,8],[2,3]}
- 第五次后:{[4,5],[6,6],[2,3]}
- 第六次后:{[4,5],[6,6],[2,3],[5,9]}
- 第七次后:{[4,5],[6,6],[2,3],[5,7]}
【数据范围】
记 k1,k2,k3 分别为 opt=1,2,3 的询问个数。
测试点编号 |
k1≤ |
k2≤ |
k3≤ |
type= |
特殊性质 |
1∼2 |
100 |
=0 |
无 |
3∼5 |
105 |
5 |
3×105 |
6∼8 |
105 |
1 |
所有 2 操作在所有 1 操作之后 |
9∼12 |
3×105 |
13∼17 |
li≤105≤ri |
18∼20 |
5×104 |
无 |
21∼25 |
105 |
=1 |
对于所有数据,1≤q≤5×105, k3≥1, 0≤li′,ri′≤2×105, 1≤li≤ri≤2×105,0≤type≤1,1≤opt≤3。