#HK5258. 「NOISG 2023 Final」Inspections

「NOISG 2023 Final」Inspections

题目描述

译自 NOISG 2023 Final T2. Inspections

兔子本森现在需要建造一架飞机!

本森的工厂有 nn 台机器,编号从 11nn。每台机器运行一天,且同一时间只能运行一台机器。他有 mm 个任务需要完成,编号从 11mm。每个任务 ii 由两个正整数 l[i]l[i]r[i]r[i] 表示,其中 l[i]r[i]l[i] \leq r[i]

要完成任务 ii,本森需要按顺序运行机器 l[i],l[i]+1,,r[i]l[i], l[i]+1, \ldots, r[i]。一台机器运行结束后,下一台机器立即开始运行。完成任务 ii 后,本森立即开始任务 i+1i+1,直到完成任务 mm

为了遵守安全规定,工厂必须设定一个安全值 ss。如果一台机器的安全值为 ss,且在过去 ss 天或更长时间内未运行,则该机器在运行前需要检查。机器首次运行时无需检查。详见示例说明。

本森有 qq 个不同的候选安全值 s[1],s[2],,s[q]s[1], s[2], \ldots, s[q]。对于每个安全值 s[j]s[j],帮助他计算若安全值为 s[j]s[j] 时需要进行的检查次数。

输入格式

程序需从标准输入读取数据。

输入的第一行包含三个空格分隔的整数 n,m,qn, m, q,分别表示机器数量、任务数量和安全值数量。

接下来的 mm 行,每行包含两个空格分隔的整数,分别为 l[i]l[i]r[i]r[i],描述任务 ii

下一行包含 qq 个空格分隔的整数 s[1],s[2],,s[q]s[1], s[2], \ldots, s[q],表示待测试的 qq 个安全值。

输出格式

程序需向标准输出输出结果。

输出一行,包含 qq 个空格分隔的整数,第 jj 个整数表示若安全值为 s[j]s[j] 时需要进行的检查次数。

5 3 7
1 3
3 5
2 3
0 1 2 3 4 5 6

3 2 2 2 1 0 0

机器将按以下顺序运行:1,2,3,3,4,5,2,31,2,3,3,4,5,2,3

在第 44 天,机器 33 在上次运行后 00 天再次运行。

在第 77 天,机器 22 在上次运行后 44 天运行。

在第 88 天,机器 33 在上次运行后 33 天运行。

若安全值为 00,则机器 33 需在第 44 天和第 88 天检查,机器 22 需在第 77 天检查。

若安全值为 22,则机器 33 仅需在第 88 天检查,机器 22 仍需在第 77 天检查。

这个样例满足子任务 1,2,4,51,2,4,5 的限制。

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

15 14 12 9 5 0 0

这个样例满足所有子任务的限制。

数据范围与提示

对于所有输入数据,满足:

  • 1n,m,q2000001 \leq n, m, q \leq 200000
  • 1l[i]r[i]n1 \leq l[i] \leq r[i] \leq n
  • 0s[j]10120 \leq s[j] \leq 10^{12}

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 1111 1n,m,q2001 \leq n, m, q \leq 200
22 1818 1n,m20001 \leq n, m \leq 2000
33 2222 l[i]=1l[i]=1
44 2626 m2000m \leq 2000
55 2323 无附加限制