D. 累计距离

    远端评测题 3000ms 1024MiB

累计距离

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

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

塔尖 国计划召开一场所有国民都要参加的大会。为此,所有人需要前往会议举办地点,所有人前往该地点所需的移动距离之和称为“累计距离”,我们用 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 $$

塔尖 国已经准备了 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

提示

数据范围

  • 1N,Q2000001 \leq N,Q \leq 200\,0001ai10001 \leq a_i \leq 1\,000109xi109-10^9 \leq x_i \leq 10^9
  • 对于所有 jj109qj109-10^9 \leq q_j \leq 10^9
  • 村庄位置各不相同,候选位置各不相同
  • 所有给定数值均为整数

子任务

  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 分)无额外约束条件

算法周赛 - round21

未参加
状态
已结束
规则
乐多
题目
4
开始于
2025-6-15 19:00
结束于
2025-6-15 21:00
持续时间
2 小时
主持人
参赛人数
27