#P11532. [2024省队模拟]测量

[2024省队模拟]测量

【题目描述】

nn 个人要吃饭。有 mm 个电饭锅供他们使用。每个人煮饭都需要 TT 的时间。当一个电饭锅被一个人占用时,另一个人不能同时用它。第 ii 个人计划在时刻 tit_i 煮饭,他不会在 tit_i 时刻之前煮饭,但他可能必须等待其他人煮完饭才能煮自己的饭。给定每个人计划煮饭的时间,你需要安排大家煮饭的时间和所用的电饭锅,使得所有人等待的时长之和最小。即:你需要确定 sitis_i\ge t_i 表示第 ii 个人真实的煮饭时间,以及 pi[1,m]p_i\in[1,m] 表示第 ii 个人使用的电饭锅,使得 pi=pjsisjTp_i=p_j \Rightarrow |s_i-s_j| \ge T 恒成立,并最小化 i=1n(siti)\sum_{i=1}^n (s_i-t_i)

然而,计划赶不上变化,现在情况有变,有人可能要迟到。你需要回答 qq 个询问,第 jj 个询问为:如果 tajt_{a_j} 变为 taj+bjt_{a_j}+b_j,那么原问题的答案会变成什么。注意:询问间独立,即每次询问并不会真的把 tajt_{a_j} 变为 taj+bjt_{a_j}+b_j

【输入格式】

从文件 measure.inmeasure.in 中读入数据。

第一行三个正整数 n,m,Tn,m,Tn3×105n \le 3\times 10^5m5m \le 5T109T \le 10^9)。

第二行 nn 个正整数,第 ii 个数为 tit_iti109t_i \le 10^9)。

第三行一个非负整数 qqq105q \le 10^5)。

接下来 qq 行,每行两个正整数 aj,bja_j,b_jajna_j \le nbj109b_j \le 10^9)。

【输出格式】

输出到文件 measure.outmeasure.out 中。

qq 行,每行一个非负整数,表示第 jj 次询问的答案。

【样例 #1】

输入:

5 2 5
2 4 6 7 8
3
1 6
2 3
3 4

输出:

11
8
3

【样例 #2】

输入:

11 3 3
1 4 1 5 9 2 6 5 3 5 8
9
7 9
3 2
3 8
4 6
2 6
4 3
3 8
3 2
7 9

输出:

6
15
9
5
7
7
9
15
6

【数据范围和约定】

对于 20%20\% 的数据:n,q100n,q\le 100

对于 30%30\% 的数据:n,q1000n,q\le 1000

对于另外 10%10\% 的数据:q5q\le 5

对于再另外 20%20\% 的数据:m=1m=1

对于 100%100\% 的数据:1ajn3×1051\le a_j\le n \le 3\times 10^51m51\le m \le 50q1050\le q \le 10^51T,ti,bj1091 \le T,t_i,b_j \le 10^9