Penguinland 是一个无限长的数轴,上面有 $n$ 只怪物。第 $i$ 只怪物初始位于数轴上的位置 $a[i]$,生命值为 $h[i]$。保证没有两只怪物初始位置相同。
今天,企鹅 Brian 想要击败所有的怪物!为了击败它们,Brian 在某些位置埋下了 $k$ 个地雷。第 $j$ 个地雷位于位置 $x[j]$。引爆一个地雷可以瞬间摧毁该位置上的所有怪物,且每个地雷可以被引爆任意多次。然而,每次引爆需要花费 1 美元。保证没有两个地雷埋在同一个位置。
除了引爆地雷外,Brian 还可以执行以下两种操作:
- 将一只怪物沿数轴向左或向右移动 1 个单位。
- 将一只怪物的生命值增加或减少 1。
每执行一次操作需要花费 1 美元。
如果一只怪物的生命值降为 0,或者被地雷摧毁,则视为被击败。请帮助 Brian 计算击败所有怪物所需的最少花费(以美元为单位)。
输入格式
程序必须从标准输入读取数据。
第一行包含两个空格分隔的整数 $n$ 和 $k$。
接下来的 $n$ 行,每行包含两个空格分隔的整数。第 $i$ 行包含 $a[i]$ 和 $h[i]$。
最后一行包含 $k$ 个空格分隔的整数 $x[1], x[2], \dots, x[k]$。
输出格式
程序必须打印到标准输出。
输出一个整数,即击败所有怪物所需的最少花费(以美元为单位)。
输出应仅包含一个整数。不要打印任何额外文本,例如 Enter a number 或 The answer is。
子任务
对于所有测试用例,输入满足以下范围:
- $1 \le n, k \le 200\,000$
- $1 \le a[i], h[i] \le 10^9$,对于所有 $1 \le i \le n$
- $1 \le x[i] \le 10^9$,对于所有 $1 \le i \le k$
- $a[i] \neq a[j]$,对于所有 $i \neq j$
- $x[i] \neq x[j]$,对于所有 $i \neq j$
程序将在满足以下限制的输入实例上进行测试:
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 0 | 0 | 样例测试用例 |
| 1 | 14 | $k = 1$ |
| 2 | 6 | $k = 2$ |
| 3 | 10 | $n, k \le 18$ |
| 4 | 30 | $n, k \le 3000$ |
| 5 | 29 | $h[i] = 10^9$ |
| 6 | 11 | 无附加限制 |
样例
样例输入 1
3 1 2 2 4 5 5 4 5
样例输出 1
4
说明 1
这里有 $n = 3$ 只怪物和 $k = 1$ 个地雷。Brian 可以:
- 将怪物 1 的生命值减少到 0,花费 2 美元。
- 将怪物 2 向右移动 1 个单位(将其位置从 4 变为 5),花费 1 美元。
- 引爆位置 5 的地雷,击败怪物 2 和 3,花费 1 美元。
总花费为 $2 + 1 + 1 = 4$ 美元。
样例输入 2
5 2 7 7 6 3 10 4 4 4 9 1 7 10
样例输出 2
7
说明 2
这里有 $n = 5$ 只怪物和 $k = 2$ 个地雷。Brian 可以:
- 将怪物 5 的生命值减少到 0,花费 1 美元。
- 引爆地雷 2,击败怪物 3,花费 1 美元。
- 将怪物 2 向右移动 1 个单位(将其位置从 6 变为 7),花费 1 美元。
- 将怪物 4 向右移动 3 个单位(将其位置从 4 变为 7),花费 3 美元。
- 引爆地雷 1,击败怪物 1、2 和 4,花费 1 美元。
总花费为 $1 + 1 + 1 + 3 + 1 = 7$ 美元。
样例输入 3
10 5 19 10 5 3 1 2 3 6 17 2 20 3 8 2 12 3 14 2 15 1 40 13 37 14 6
样例输出 3
23