#P16603. [GCPC2021]Joined Sessions

[GCPC2021]Joined Sessions

题目描述

Lucy 非常懒。她的老板让她参加一个会议活动,并希望她尽可能多参加其中的会议。然而 Lucy 并不想参加太多,因此她会选择一些会议,使得所有其他会议都与她所选择的至少一个会议时间重叠。这样一来,老板就无法抱怨,因为剩余的每一场会议都与她已经选择的某场会议冲突。

阅读日程安排后,Lucy 发现即使采用这种策略,她仍然需要参加相当多的会议。幸运的是,她的好友 Max 是活动组织者之一,并且恰好负责安排时间表。

Max 不能取消会议,也不能调整会议时间,但可以通过另一种方式帮助 Lucy。

由于会议通常很无聊,即使会议中途更换议题,也不会有人特别注意。因此,只要两场会议的时间有重叠,Max 就可以将它们合并成一场会议。

设会议 aabb 的开始、结束时间分别为 start(a),end(a)\operatorname{start}(a),\operatorname{end}(a)start(b),end(b)\operatorname{start}(b),\operatorname{end}(b)。如果

$$\operatorname{start}(a)\le \operatorname{start}(b)\le \operatorname{end}(a),$$

或者交换 a,ba,b 后上述条件成立,则称两场会议重叠。

将会议 a,ba,b 合并后,新会议的开始和结束时间分别为

$$\min(\operatorname{start}(a),\operatorname{start}(b))$$

$$\max(\operatorname{end}(a),\operatorname{end}(b))。$$

Max 可以反复进行合并,也可以继续将已经合并得到的会议与其他会议合并。但两场不重叠的会议不能直接合并,否则人们会发现时间表被篡改。

Lucy 想知道,能否通过这些操作减少她至少需要参加的会议数量。如果可以,至少要进行多少次合并,才能使这个最小数量至少减少 11

输入格式

输入包含:

  • 第一行一个整数 nn2n1062\le n\le 10^6),表示会议数量。
  • 接下来 nn 行,每行两个整数 a,ba,b0ab1090\le a\le b\le 10^9),表示一场会议的开始时间和结束时间。

输出格式

如果可以减少 Lucy 至少需要参加的会议数量,输出所需合并操作的最小次数。

否则输出:

impossible

样例 1

输入

4
1 3
2 5
4 7
6 9

输出

1

样例 2

输入

5
1 3
4 7
8 10
2 5
6 9

输出

2

样例 3

输入

3
1 2
2 3
3 4

输出

impossible