#P15819. [2025年山东集训第三轮]象形文字
[2025年山东集训第三轮]象形文字
题目描述
观看电影是一个复杂的过程。你将可观看的电影分为两个列表:
- 第一列表包含 部电影;
- 第二列表包含 部电影。
因此,你总共有 部电影可以看。每部电影的评分都是互不相同的整数,取自集合 。
因为你不希望连续观看太多高分电影或太多低分电影,你设计了以下观看算法:
- 每一步,你从第一列表中选取一部电影观看。之后该电影将从第一列表中消失。
- 你必须交替选择当前可用的最高分电影和最低分电影。第一次选择必须是最高分电影。
- 观看选中的电影后,你将从第二列表中选择另一部电影插入到第一列表的任意位置。当第二列表为空时,你将停止观看电影。注意这意味着第一列表将始终保持恰好 部电影。
你希望第一列表最终按评分升序排列。由于你懒得手动处理列表,你不会直接修改列表本身。相反,在算法的每一步,你需要决定插入哪部电影以及插入的位置,以使第一列表变为有序所需的步骤数最少。
输入格式
输入的第一行包含两个整数 和 。
第二行包含 个整数:第一列表中的电影评分。
第三行包含 个整数:第二列表中的电影评分。
保证第一列表和第二列表的评分的并集等于集合 。
输出格式
输出一行,包含一个整数:使得第一列表有序所需的最少步骤数,如果不可能则输出 。
样例 1
样例 1 输入
5 5
3 1 5 2 4
6 8 7 9 10
样例 1 输出
4
样例 1 解释
第一步,你观看评分 的电影(当前最高分),然后将第二列表中的 插入第一列表的末尾:
- 第一列表 ;
- 第二列表 。
第二步,观看最低分电影 ,插入 到末尾:
- 第一列表 ;
- 第二列表 。
第三步,观看最高分电影 ,插入 到末尾:
- 第一列表 ;
- 第二列表 。
第四步,观看最低分电影 ,插入 到末尾:
- 第一列表 ;
- 第二列表 。
此时第一列表已按升序排列。注意虽然示例中的插入操作都在末尾,但实际可以插入到任意位置。
数据范围与限制
对于所有数据,保证 ,。
| 子任务编号 | 子任务分值 | ||
|---|---|---|---|
| 1 | 15 | 10 | |
| 2 | 50 | 100 | |
| 3 | 200 | 700 | |
| 4 | 1000 | 5000 | |
| 5 | 40 | 100000 | 200000 |