外星章鱼 Emily 正在玩一款街机游戏。游戏机由 $N$ 个按钮组成,从左到右依次编号为 $1$ 到 $N$。游戏需要按下一系列共 $M$ 个按钮,每秒按下一个。在游戏开始后的第 $T_i$ 秒,必须按下按钮 $A_i$。请注意,即使 $i \neq j$,也有可能出现 $T_i = T_j$ 且 $A_i = A_j$ 的情况。
在游戏开始时,Emily 的每只手都可以放在任意位置。Emily 将一只手从一个按钮移动到相邻的按钮恰好需要一秒钟。Emily 的手可以同时移动,且按下按钮不需要时间。由于外星章鱼拥有无限只手,因此通过完成所有 $M$ 次按钮按下,总是可以获得游戏的最高分。然而,由于 Emily 很懒,她不想使用所有的手。设获得最高分所需的最少手数量为 $S$。
给定 Emily 必须完成的确切按钮按下序列,请帮助她找出获得游戏最高分所需的最少手数量。帮助 Emily 找到并提供 $S$ 的值。
输入格式
从标准输入读取数据。
第一行包含两个整数 $N$ 和 $M$。
第二行包含 $M$ 个整数,其中第 $i$ 个整数表示 $T_i$。
第三行包含 $M$ 个整数,其中第 $i$ 个整数表示 $A_i$。
输出格式
输出到标准输出。
输出应在单行中包含一个整数,即 Emily 获得游戏最高分所需的最少手数量。
实现细节
由于子任务 7 的输入长度可能非常大,建议您使用带有快速输入例程的 C++ 来解决此问题。科学委员会没有使用 Java 或 Python 编写的能够完全解决此问题的方案。
附件中提供了包含快速输入/输出模板的 C++ 和 Java 源文件。强烈建议您使用这些模板。
如果您使用 Java 实现解决方案,请将文件命名为 Arcade.java,并将主函数放在 Arcade 类中。
子任务
每个测试点的最大运行时间为 1.0s,最大内存使用量为 1GiB。对于所有测试用例,输入将满足以下范围:
- $1 \le N \le 10^9$
- $1 \le M \le 5 \times 10^5$
- $1 \le A_i \le N$
- $1 \le T_i \le 10^9$
您的程序将在满足以下限制的输入实例上进行测试:
设获得最高分所需的最少手数量为 $S$。
| 子任务 | 分数 | 额外限制 |
|---|---|---|
| 1 | 7 | $1 \le N, M, T_i \le 100$, $1 \le S \le 2$ |
| 2 | 11 | $1 \le N, M, T_i \le 100$, $1 \le S \le 3$ |
| 3 | 12 | $1 \le N, M, T_i \le 100$, $1 \le S \le 4$ |
| 4 | 21 | $1 \le M \le 300$ |
| 5 | 14 | $1 \le M \le 15\,000$ |
| 6 | 20 | $1 \le M \le 100\,000$ |
| 7 | 15 | 无 |
样例
输入样例 1
6 4 1 2 3 4 3 1 2 6
输出样例 1
2
样例说明 1
游戏开始时,Emily 的手将处于以下位置,她的右手按下按钮 3:
在下一秒,Emily 将她的右手向右移动一个按钮,并用她的左手按下按钮 1:
之后,她将两只手同时向右移动一个按钮,并按下按钮 2:
在最后一秒,她将她的右手向右移动一步,并按下按钮 6:
因此,Emily 需要两只手来完成游戏。因此 $S$ 的值为 2,程序输出 2。