题目描述
有一个无限长的一维数轴,初始时整根数轴都是白色的。你需要处理 Q 次操作,操作类型如下:
- 1 L R:将闭区间 [L,R] 涂成黑色(已经涂黑的区间不受影响,黑色会覆盖白色)。
- 2 L R:将闭区间 [L,R] 擦除成白色(即清除该区间内的黑色,白色会覆盖黑色)。
- 3:查询当前所有黑色区间的总长度。一个闭区间 [a,b] 的长度定义为 b−a+1。
输入格式
第一行一个整数 Q。
接下来 Q 行,每行一个操作,格式如上。
输出格式
对于每个操作 3,输出一行一个整数,表示当前黑色总长度。
样例
8
1 1 5
3
1 8 10
3
2 3 4
3
2 1 10
3
5
8
6
0
样例解释
涂黑 [1, 5],黑色总长 5。
涂黑 [8, 10],黑色区间 [1, 5] 和 [8, 10],总长 5+3=8。
擦除 [3, 4],原来 [1, 5] 被分裂成 [1, 2] 和 [5, 5],黑色区间 {[1, 2], [5, 5], [8, 10]},总长 2+1+3=6。
擦除 [1, 10],所有黑色被清除,总长 0。
数据范围
对于 30% 的数据,1≤Q≤1000,1≤L≤R≤1000。
对于 100% 的数据,1≤Q≤2×105,−109≤L≤R≤109。