#P15681. [Bulgarian2023训练营]Summer School夏令营
[Bulgarian2023训练营]Summer School夏令营
题目描述
彼得抵达程序设计夏令营当天得知,主办方组织了 场关于算法竞赛的有趣讲座。他不想错过这个机会,于是立刻开始规划自己要听哪些讲座,并将讲座从 到 编号。
他拿到的课程表中标明:第 场讲座开始时间为 ,结束时间为 。
彼得决定从编号为 的讲座开始听,并以编号为 的讲座作为最后一场讲座。
彼得只有在某场讲座已经开始后,才能加入这场讲座。一旦进入某场讲座,他必须一直待到这场讲座结束;但最后一场讲座例外。之后,他必须立即切换到另一场正在进行的讲座。
因此,彼得能从讲座 切换到讲座 当且仅当:
频繁切换主题会让彼得分心和困惑。因此,他想知道:如果从讲座 开始,最后到达讲座 ,最少需要切换多少次讲座。
给定 个不同的起点终点询问 ,请编写程序 hop,对每个询问输出最少切换次数;若无法做到,输出 impossible。
输入格式
第一行包含两个整数 ,分别表示讲座数量和询问数量。
接下来 行描述讲座时间表。第 行包含两个整数 ,分别表示第 场讲座的开始时间和结束时间。
接下来 行描述询问。第 行包含两个整数 ,表示彼得从讲座 开始,希望最后听到讲座 。
输出格式
输出 行。第 行输出一个整数,表示从讲座 到讲座 所需的最少切换次数;若不可能,则输出:
impossible
数据范围
- ,其中
子任务
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 10 | 从每场讲座至多能切换到一场其他讲座 |
| 2 | 且 | |
| 3 | 15 | |
| 4 | ||
| 5 | 20 | 不存在一场讲座完全包含在另一场讲座中,即不存在 使 |
| 6 | 30 | 无附加限制 |
样例 1
输入
5 2
1 3
2 4
4 7
7 9
3 7
1 4
3 2
输出
2
impossible
样例 2
输入
8 5
1 2
3 4
1 5
6 7
5 10
10 20
15 20
999999999 1000000000
1 6
1 7
2 4
3 3
5 8
输出
3
4
impossible
0
impossible
样例解释
在第一个样例中,可以从讲座 开始,切换到讲座 ,再切换到讲座 ,共需要两次切换。
但是,不可能从讲座 开始并以讲座 结束,因为讲座 在讲座 之前结束。