题目描述
Gimi 有 N 个会议。第 i 个会议在开区间 (xi,yi) 内进行。由于会议是线上进行的,Gimi 可以同时参加多个会议。
为了简化日程,他依次执行了 Q 个操作,每个操作属于以下两种之一:
split t:Gimi 在时刻 t 休息。对于所有满足 xi<t<yi 的会议 (xi,yi),该会议会被删除,并被替换成两个新会议 (xi,t) 和 (t,yi)。
skip t:Gimi 不再参加所有在时刻 t 正在进行的会议。也就是说,对于所有满足 xi<t<yi 的会议 (xi,yi),该会议会被直接删除。
所有操作执行完后,Gimi 想知道剩余所有会议持续时间之和。一个会议 (x,y) 的持续时间定义为 y−x。即使多个会议在时间上重叠,它们的持续时间也要分别累加。
输入格式
第一行输入两个整数 N,Q。
接下来 N 行,每行输入两个整数 xi,yi,表示一个会议区间。
接下来 Q 行,每行输入两个整数 ai,ti:
- 若 ai=1,表示一次
split t_i 操作;
- 若 ai=2,表示一次
skip t_i 操作。
输出格式
输出一个整数,表示所有操作完成后,剩余会议持续时间之和。
数据范围与约束
- 1≤N,Q≤500000;
- 1≤xi,yi,ti≤1000000;
- 1≤ai≤2。
注:题面中会议区间写作 (xi,yi),实际有意义的会议应满足 xi<yi。
子任务
| 子任务 |
分值 |
限制 |
| 1 |
9 |
1≤N,Q≤200 |
| 2 |
12 |
N=1 |
| 3 |
13 |
N,Q≤1000 |
| 4 |
12 |
对所有 1≤i<N,xi≤xi+1,yi≤yi+1 |
| 5 |
11 |
N≤50000 且 xi,yi,ti≤50000 |
| 6 |
19 |
N≤100000 |
| 7 |
24 |
无额外限制 |
样例
输入
2 3
1 10
4 10
1 3
1 6
2 5
输出
10
样例解释
初始有两个会议:(1,10) 和 (4,10)。
第一次操作 split 3 后,会议 (1,10) 被拆成 (1,3) 和 (3,10),现在有:
(1,3),(3,10),(4,10).
第二次操作 split 6 后,(3,10) 被拆成 (3,6),(6,10),(4,10) 被拆成 (4,6),(6,10),现在有:
(1,3),(3,6),(6,10),(4,6),(6,10).
第三次操作 skip 5 会删除 (3,6) 和 (4,6)。
剩下 (1,3),(6,10) 以及另一个 (6,10),总持续时间为:
(3−1)+(10−6)+(10−6)=10.