P12725 [KOI 2021 Round 2] 累计距离
题目背景
试题来源:。中文翻译做了少量本土化修改。
按照[署名—非商业性使用—相同方式共享 4.0 协议国际版](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)进行授权。
题目描述
KOI 国是一个由 $N$ 个村庄构成的国家,这些村庄分布在数轴上。其中第 $i$ 个村庄($1 \leq i \leq N$)位于位置 $x_i$,并有 $a_i$ 名居民。不会有两个不同村庄位于相同的位置。
KOI 国计划召开一场所有国民都要参加的大会。为此,所有人需要前往会议举办地点,所有人前往该地点所需的移动距离之和称为“累计距离”,我们用 $f(x)$ 表示当会议举办地点为 $x$ 时的累计距离。
住在第 $i$ 个村庄的人前往位置为 $x$ 的会议地点时,需要移动的距离为 $|x_i - x|$。由于第 $i$ 个村庄有 $a_i$ 名居民,因此该村居民所需的总移动距离为 $a_i \times |x_i - x|$。
将所有村庄的该值加总,即可得到在位置 $x$ 举办会议时的累计距离:
$$
f(x) = \sum_{i=1}^{N} a_i \times |x_i - x|
$$
例如,若村庄的位置为 $x_1 = 1$、$x_2 = 3$、$x_3 = 6$,各村庄的居民数分别为 $a_1 = 2$、$a_2 = 1$、$a_3 = 3$,当会议地点为 $x = 4$ 时,累计距离为:
$$
f(4) = 2 \times |1 - 4| + 1 \times |3 - 4| + 3 \times |6 - 4| = 13
$$
KOI 国已经准备了 $Q$ 个会议地点候选位置。第 $j$ 个候选位置($1 \leq j \leq Q$)为 $q_j$。多个候选位置之间不会重复,但候选位置可能与某个村庄位置相同。
请编写程序,计算每一个候选会议地点 $q_j$ 的累计距离 $f(q_j)$。
输入格式
第一行包含两个整数 $N$ 和 $Q$,用一个空格隔开。
接下来的 $N$ 行,每行包含两个整数 $a_i$ 和 $x_i$,表示每个村庄的居民人数及其位置。
接下来的 $Q$ 行,每行一个整数 $q_j$,表示一个候选会议地点的位置。
输出格式
输出 $Q$ 行。第 $j$ 行输出会议地点为 $q_j$ 时的累计距离 $f(q_j)$。
说明/提示
**约束条件**
- $1 \leq N \leq 200\,000$
- 对于所有 $i$($1 \leq i \leq N$),$1 \leq a_i \leq 1\,000$
- 对于所有 $i$,$-10^9 \leq x_i \leq 10^9$
- $1 \leq Q \leq 200\,000$
- 对于所有 $j$,$-10^9 \leq q_j \leq 10^9$
- 对任意 $1 \leq i_1 < i_2 \leq N$,$x_{i_1} \ne x_{i_2}$(村庄位置各不相同)
- 对任意 $1 \leq j_1 < j_2 \leq Q$,$q_{j_1} \ne q_{j_2}$(候选位置各不相同)
- 所有给定数值均为整数
**子任务**
1. (9 分)$N,Q \leq 5\,000$
2. (21 分)对所有 $i$,满足 $1 \leq x_i \leq 200\,000$,且对所有 $j$,满足 $1 \leq q_j \leq 200\,000$
3. (25 分)对所有 $i$,$a_i = 1$
4. (45 分)无额外约束条件