#P14727. [ICPC 2022 Seoul R] Frog Jump

[ICPC 2022 Seoul R] Frog Jump

Description

一只青蛙住在一个美丽的湖中。湖面上有许多荷叶排成一行漂浮着,这些荷叶用直线上的闭区间表示。青蛙喜欢待在荷叶上,并在它们之间移动。

给定直线上(即 xx 轴上)表示荷叶的 nn 个闭区间,青蛙初始位于某个区间 I0I_0 上。如果两个区间重叠,青蛙可以从一个区间 II 移动到另一个区间 JJ。两个区间重叠当它们共享一个公共点。因此,青蛙可以通过重叠的区间移动。当青蛙通过重叠区间向右(左)移动时,它可能会到达一个区间 HH,此时它无法再从 HH 的右(左)端点向右(左)移动。在这种情况下,如果存在满足以下条件的区间 KK:其左(右)端点大于(小于)HH 的右(左)端点,并且在其左(右)端点最小(最大)的区间中,青蛙可以跳转到区间 KK。然后,跳跃长度定义为 HH 的右(左)端点与 KK 的左(右)端点之间的距离。参见图 F.1。

:::align{center}

图 F.1 跳跃长度 :::

给定一个由 kk 个区间 I1,I2,,IkI_1, I_2, \dots, I_k 组成的序列,青蛙需要从初始区间 I0I_0 出发,按顺序访问这些区间。在此旅行中,青蛙在必要时必须进行跳跃。

例如,在图 F.2 中,给出了八个区间 [1,8][1,8][2,4][2,4][5,11][5,11][13,15][13,15][15,17][15,17][16,18][16,18][19,22][19,22][20,22][20,22],并从 1188 编号。青蛙初始位于区间 11。给定青蛙需按顺序访问的区间序列:3377446633。那么青蛙从区间 11 移动到 33 时没有跳跃,从区间 33 移动到 77 时有两次跳跃,即 343 \to 4676 \to 7,跳跃总长度为 33。在此移动过程中,青蛙经过了区间 44。然而,它需要在访问区间 77 之后再访问区间 44。然后,从区间 7744 以及从 6633 的移动过程中有两次跳跃,跳跃总长度为 33。因此,在青蛙访问完所有给定区间后,总跳跃长度为 66

:::align{center} :::

给定直线上的 nn 个区间以及一个由 kk 个区间组成的序列,请编写一个程序,输出青蛙从初始区间 11 出发按顺序访问这 kk 个区间的旅行过程中总跳跃长度。

Input Format

你的程序需要从标准输入读取数据。输入的第一行包含两个整数 nnkk (1n100,0001 \leq n \leq 100,0001k1,000,0001 \leq k \leq 1,000,000),其中 nn 是区间数量,kk 是青蛙需要访问的区间数量。区间从 11nn 编号,青蛙的初始位置始终是区间 11。接下来的 nn 行中,第 ii 行包含两个整数 aabb (0a<b1090 \leq a < b \leq 10^9),分别表示区间 ii 的左端点和右端点。区间按其左端点递增的顺序给出——如果左端点相同,则按右端点递增顺序给出。此外,所有区间互不相同。接下来的一行包含 kk 个整数,表示青蛙按顺序需要访问的区间。这些整数在 11nn 之间,可以重复。

Output Format

你的程序需要向标准输出写入数据。输出恰好一行。该行应包含青蛙按顺序访问给定的 kk 个区间时的总跳跃长度。

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