第 1 题 累计距离 (cumulativedistance)
时间限制 1.0 s · 空间限制 256 MB · 105 个测试点 · 全文比较(过滤行末空格及文末回车)
本题使用文件输入输出:输入文件 cumulativedistance.in,输出文件 cumulativedistance.out。
按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。
题目描述
KOI 国是一个由 N 个村庄构成的国家,这些村庄分布在数轴上。其中第 i 个村庄(1≤i≤N)位于位置 xi,并有 ai 名居民。不会有两个不同村庄位于相同的位置。
KOI 国计划召开一场所有国民都要参加的大会。为此,所有人需要前往会议举办地点,所有人前往该地点所需的移动距离之和称为“累计距离”,我们用 f(x) 表示当会议举办地点为 x 时的累计距离。
住在第 i 个村庄的人前往位置为 x 的会议地点时,需要移动的距离为 ∣xi−x∣。由于第 i 个村庄有 ai 名居民,因此该村居民所需的总移动距离为 ai×∣xi−x∣。
将所有村庄的该值加总,即可得到在位置 x 举办会议时的累计距离:
f(x)=i=1∑Nai×∣xi−x∣例如,若村庄的位置为 x1=1、x2=3、x3=6,各村庄的居民数分别为 a1=2、a2=1、a3=3,当会议地点为 x=4 时,累计距离为:
f(4)=2×∣1−4∣+1×∣3−4∣+3×∣6−4∣=13KOI 国已经准备了 Q 个会议地点候选位置。第 j 个候选位置(1≤j≤Q)为 qj。多个候选位置之间不会重复,但候选位置可能与某个村庄位置相同。
请编写程序,计算每一个候选会议地点 qj 的累计距离 f(qj)。
输入格式
第一行包含两个整数 N 和 Q,用一个空格隔开。
接下来的 N 行,每行包含两个整数 ai 和 xi,表示每个村庄的居民人数及其位置。
接下来的 Q 行,每行一个整数 qj,表示一个候选会议地点的位置。
输出格式
输出 Q 行。第 j 行输出会议地点为 qj 时的累计距离 f(qj)。
样例
样例 1
输入:
输出:
样例 2
输入:
文本
4 5
3 -4
1 -10
2 11
4 6
6
-5
1
-12
14
输出:
提示
约束条件
- 1≤N≤200000
- 对于所有 i(1≤i≤N),1≤ai≤1000
- 对于所有 i,−109≤xi≤109
- 1≤Q≤200000
- 对于所有 j,−109≤qj≤109
- 对任意 1≤i1<i2≤N,xi1=xi2(村庄位置各不相同)
- 对任意 1≤j1<j2≤Q,qj1=qj2(候选位置各不相同)
- 所有给定数值均为整数
子任务
- (9 分)N,Q≤5000
- (21 分)对所有 i,满足 1≤xi≤200000,且对所有 j,满足 1≤qj≤200000
- (25 分)对所有 i,ai=1
- (45 分)无额外约束条件