#L0059. 排练厅档期管理

排练厅档期管理

题目背景

形式化题意:

你需要维护一个在数轴上的线段的集合 SS,支持两种操作:

A l r 表示将 SS 中所有与线段 [l,r][l,r] 相交的线段删去,并将 [l,r][l,r] 加入 SS 中。

B 查询 SS 中的元素数量。

对于 A 操作,每次还需输出删掉的元素个数。

题目描述

星光艺术中心有一间排练厅,可以提供给各个社团排练节目。

大多数排练都需要连续占用好几天(个别只需要一天),而排练厅只有一间,所以不同排练的档期不能冲突:前一场排练的结束日期必须早于后一场的开始日期。因此,要接受一份新的档期申请,就必须推掉所有与它冲突的已接受申请。

一般来说,如果艺术中心先前已经接受了某份申请(例如 1010 日到 1515 日),就不会再接受与之冲突的申请(例如 1212 日到 1717 日)。但有时出于经营考虑,中心也会为了接下一份新申请,而推掉一个甚至几个先前接受的预约。(本题中为方便起见,所有日期都用一个整数表示;例如一场排练从 9090 日持续到 9999 日,那么下一场最早只能从 100100 日开始。)

最近这类业务越来越多,管理员小星希望你设计一套计算机系统来帮忙。系统需要执行两种操作:

A 操作:来了一份从 startstart 日到 endend 日的新申请,接受它并推掉所有冲突的申请。执行时系统要回答为了这份新申请推掉了多少份预约,方便管理员核对记录。

B 操作:回答当前仍然有效的预约总数。

输入格式

第一行一个正整数 nn,表示操作个数。

接下来 nn 行,每行表示一个操作,都是上面两种中的一个。

输出格式

输出 nn 行,每行一个整数,表示对应操作的答案。

样例

6
A 10 15
A 17 19
A 12 17
A 90 99
A 11 12
B
0

0 2 0 1 2

</p>

提示

【数据范围】

对于 100%100\% 的数据,1n2×1051\le n \le 2\times 10^5,1lr1051\le l \le r \le 10^5

难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
793
类型
传统题
Time Limit
1000ms
Memory Limit
125MiB
上传者