#P12725. [KOI 2021 Round 2] 累计距离

    ID: 12504 Type: RemoteJudge 3000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>二分2021前缀和KOI(韩国)

[KOI 2021 Round 2] 累计距离

题目背景

试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。

按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。

题目描述

KOI 国是一个由 NN 个村庄构成的国家,这些村庄分布在数轴上。其中第 ii 个村庄(1iN1 \leq i \leq N)位于位置 xix_i,并有 aia_i 名居民。不会有两个不同村庄位于相同的位置。

KOI 国计划召开一场所有国民都要参加的大会。为此,所有人需要前往会议举办地点,所有人前往该地点所需的移动距离之和称为“累计距离”,我们用 f(x)f(x) 表示当会议举办地点为 xx 时的累计距离。

住在第 ii 个村庄的人前往位置为 xx 的会议地点时,需要移动的距离为 xix|x_i - x|。由于第 ii 个村庄有 aia_i 名居民,因此该村居民所需的总移动距离为 ai×xixa_i \times |x_i - x|

将所有村庄的该值加总,即可得到在位置 xx 举办会议时的累计距离:

f(x)=i=1Nai×xixf(x) = \sum_{i=1}^{N} a_i \times |x_i - x|

例如,若村庄的位置为 x1=1x_1 = 1x2=3x_2 = 3x3=6x_3 = 6,各村庄的居民数分别为 a1=2a_1 = 2a2=1a_2 = 1a3=3a_3 = 3,当会议地点为 x=4x = 4 时,累计距离为:

$$f(4) = 2 \times |1 - 4| + 1 \times |3 - 4| + 3 \times |6 - 4| = 13 $$

KOI 国已经准备了 QQ 个会议地点候选位置。第 jj 个候选位置(1jQ1 \leq j \leq Q)为 qjq_j。多个候选位置之间不会重复,但候选位置可能与某个村庄位置相同。

请编写程序,计算每一个候选会议地点 qjq_j 的累计距离 f(qj)f(q_j)

输入格式

第一行包含两个整数 NNQQ,用一个空格隔开。

接下来的 NN 行,每行包含两个整数 aia_ixix_i,表示每个村庄的居民人数及其位置。

接下来的 QQ 行,每行一个整数 qjq_j,表示一个候选会议地点的位置。

输出格式

输出 QQ 行。第 jj 行输出会议地点为 qjq_j 时的累计距离 f(qj)f(q_j)

3 1
2 1
1 3
3 6
4
13
4 5
3 -4
1 -10
2 11
4 6
6
-5
1
-12
14
56
84
66
144
116

提示

约束条件

  • 1N2000001 \leq N \leq 200\,000
  • 对于所有 ii1iN1 \leq i \leq N),1ai10001 \leq a_i \leq 1\,000
  • 对于所有 ii109xi109-10^9 \leq x_i \leq 10^9
  • 1Q2000001 \leq Q \leq 200\,000
  • 对于所有 jj109qj109-10^9 \leq q_j \leq 10^9
  • 对任意 1i1<i2N1 \leq i_1 < i_2 \leq Nxi1xi2x_{i_1} \ne x_{i_2}(村庄位置各不相同)
  • 对任意 1j1<j2Q1 \leq j_1 < j_2 \leq Qqj1qj2q_{j_1} \ne q_{j_2}(候选位置各不相同)
  • 所有给定数值均为整数

子任务

  1. (9 分)N,Q5000N,Q \leq 5\,000
  2. (21 分)对所有 ii,满足 1xi2000001 \leq x_i \leq 200\,000,且对所有 jj,满足 1qj2000001 \leq q_j \leq 200\,000
  3. (25 分)对所有 iiai=1a_i = 1
  4. (45 分)无额外约束条件