QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 2048 MB Total points: 100

#5082. Frog Jump

統計

一只青蛙生活在一个美丽的湖泊中。湖面上漂浮着许多排成一行的荷叶,这些荷叶可以用数轴上的闭区间来表示。青蛙喜欢待在荷叶上,并在它们之间移动。

给定数轴($x$ 轴)上的 $n$ 个闭区间,代表荷叶,青蛙最初位于某个区间 $I_0$ 上。如果两个区间有重叠,青蛙就可以从一个区间 $I$ 移动到另一个区间 $J$。两个区间重叠意味着它们共享一个公共点。因此,青蛙可以通过重叠的区间进行移动。当青蛙通过重叠的区间向右(或向左)移动时,它可能会到达一个区间 $H$,此时它无法再从 $H$ 的右(或左)端点继续向右(或向左)移动。在这种情况下,如果存在满足条件的区间,青蛙可以跳跃到区间 $K$。该区间 $K$ 的左(或右)端点在所有左(或右)端点大于(或小于)$H$ 的右(或左)端点的区间中是最小(或最大)的。此时,跳跃长度定义为 $H$ 的右(或左)端点与 $K$ 的左(或右)端点之间的距离。参见图 F.1。

图 F.1 跳跃长度

给定一个包含 $k$ 个区间的序列 $I_1, I_2, \dots, I_k$,青蛙需要按照顺序从初始区间 $I_0$ 开始访问这些区间。在这次旅行中,青蛙必须在必要时进行跳跃。

例如,在图 F.2 中,给出了八个区间 $[1, 8], [2, 4], [5, 11], [13, 15], [15, 17], [16, 18], [19, 22]$ 和 $[20, 22]$,编号从 1 到 8。青蛙最初位于区间 1。需要按顺序访问的区间序列为 3, 7, 4, 6, 3。青蛙从区间 1 移动到 3 时无需跳跃,从 3 移动到 7 时进行了两次跳跃(即 $3 \to 4$ 和 $6 \to 7$),总跳跃长度为 3。在此过程中,青蛙经过了区间 4。尽管如此,它仍需在访问区间 7 之后访问区间 4。随后,在从 7 到 4 以及从 6 到 3 的移动过程中,又有两次跳跃,总跳跃长度为 3。因此,当青蛙访问完所有给定的区间后,总跳跃长度为 6。

图 F.2 给定的八个区间

给定数轴上的 $n$ 个区间和一个包含 $k$ 个区间的序列,编写一个程序,输出青蛙从初始区间 1 开始按顺序访问这 $k$ 个区间过程中的总跳跃长度。

输入格式

程序从标准输入读取数据。输入的第一行包含两个整数 $n$ 和 $k$ ($1 \le n \le 100,000$ 且 $1 \le k \le 1,000,000$),其中 $n$ 是区间数量,$k$ 是青蛙需要访问的区间数量。区间编号从 1 到 $n$,青蛙的初始位置始终为 1。接下来的 $n$ 行中,第 $i$ 行包含两个整数 $a$ 和 $b$ ($0 \le a < b \le 10^9$),分别表示区间 $i$ 的左端点和右端点。区间按左端点递增的顺序给出;如果左端点相同,则按右端点递增的顺序给出。此外,所有区间各不相同。最后一行包含 $k$ 个整数,表示青蛙需要按顺序访问的区间。这些整数在 1 到 $n$ 之间,且可以重复。

输出格式

程序将结果写入标准输出。仅输出一行,包含青蛙按顺序访问给定的 $k$ 个区间时的总跳跃长度。

样例

样例输入 1

4 3
0 2
0 3
3 5
6 7
4 2 3

样例输出 1

2

样例输入 2

4 3
0 2
0 3
3 5
6 7
2 3 2

样例输出 2

0

样例输入 3

8 5
1 8
2 4
5 11
13 15
15 17
16 18
19 22
20 22
3 7 4 6 3

样例输出 3

6

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.