#P15948. [JOI Final 2026] 面包师 / Baker

[JOI Final 2026] 面包师 / Baker

背景

本题测试数据较大,可能需要等待较长时间加载数据。

题目描述

JOI 面包店是一家以令人垂涎的牛角面包而闻名的面包店。JOI 面包店有 NN 名面包师,编号从 11 到 NN。面包师 ii (1≤i≤N1 \leq i \leq N) 制作一个牛角面包需要 ii 分钟。一名面包师不能同时制作多个牛角面包。

今天,有 MM 名编号从 11 到 MM 的顾客计划光顾 JOI 面包店,每位顾客都计划订购一个牛角面包。顾客 jj (1≤j≤M1 \leq j \leq M) 将在时间 TjT_j 订购一个牛角面包,其中时间 tt 表示从现在起 tt 分钟后的时间。然而,如果顾客在下单后 LL 分钟内无法收到他们的牛角面包,他们就会放弃并离开商店。换句话说,为了完成顾客 jj (1≤j≤M1 \leq j \leq M) 的订单,牛角面包必须在时间 Tj+LT_j + L 之前(包括恰好在时间 Tj+LT_j + L)制作完成。

管理 JOI 面包店的经理 K 计划今天只让一名面包师工作,并且正在考虑派遣哪位面包师以及在什么时间开始工作。由于面包师在值班期间会高度专注地制作面包,他们会忽略所有在他们开始时间之后(不包括恰好在开始时间)下的订单。也就是说,在时间 tt 开始工作的面包师无法完成满足 Tj>tT_j > t 的顾客 jj (1≤j≤M1 \leq j \leq M) 的订单。

经理 K 目前正在考虑 QQ 个工作计划。第 qq 个计划 (1≤q≤Q1 \leq q \leq Q) 是让面包师 AqA_q 在时间 BqB_q 开始工作。为了帮助做出决定,对于这 QQ 个计划中的每一个,他想知道如果执行该计划,可以完成的订单的最大顾客数量。请注意,面包师到达后开始制作牛角面包所需的时间,以及制作完一个后开始制作下一个新牛角面包所需的时间,均可以忽略不计。

给定有关光顾 JOI 面包店的顾客信息和工作计划,编写一个程序,求出每个计划中可以完成订单的最大顾客数量。

输入格式

从标准输入读取以下数据。

NN MM LL QQ
T1T_1 T2T_2 ⋯\cdots TMT_M
A1A_1 B1B_1
A2A_2 B2B_2
⋮\vdots
AQA_Q BQB_Q

输出格式

向标准输出写入 QQ 行。输出的第 qq 行 (1≤q≤Q1 \leq q \leq Q) 应包含一个整数,表示在第 qq 个工作计划中可以完成订单的最大顾客数量。

4 4 6 4
0 2 3 8
2 3
1 6
3 3
4 7
3
2
2
0
20 5 12 4
1 2 4 8 10
1 12
3 10
3 11
15 10
5
4
3
0
100000 6 272273 10
5 9 209 8128 17202 50102
164 9
11 24
835 9267
2 256
2 314156
18475 142
1826 18978
44757 1
4 1646
218 44
2
2
4
3
1
2
5
0
3
2

提示

样例 1

关于第 11 个工作计划,面包师 22 在时间 33 开始工作,可以完成 33 位顾客 1,21, 2 和 33 的订单,例如方案如下:

  • 首先,为了完成顾客 11 的订单,在时间 33 开始制作牛角面包,并在 22 分钟后的时间 55 完成。(这满足了在时间 T1+L=0+6=6T_1 + L = 0 + 6 = 6 之前完成的条件。)
  • 接下来,为了完成顾客 22 的订单,在时间 55 开始制作牛角面包,并在 22 分钟后的时间 77 完成。(这满足了在时间 T2+L=2+6=8T_2 + L = 2 + 6 = 8 之前完成的条件。)
  • 最后,为了完成顾客 33 的订单,在时间 77 开始制作牛角面包,并在 22 分钟后的时间 99 完成。(这满足了在时间 T3+L=3+6=9T_3 + L = 3 + 6 = 9 之前完成的条件。)

顾客 44 的订单被忽略,因为它是在面包师开始时间之后到达的,所以无法完成。因此,最多可以完成 33 位顾客的订单,所以第 11 行输出 33。

关于第 22 个工作计划,面包师 11 在时间 66 开始工作,可以完成 22 位顾客 22 和 33 的订单,例如方案如下:

  • 首先,为了完成顾客 33 的订单,在时间 66 开始制作牛角面包,并在 11 分钟后的时间 77 完成。(这满足了在时间 T3+L=3+6=9T_3 + L = 3 + 6 = 9 之前完成的条件。)
  • 接下来,为了完成顾客 22 的订单,在时间 77 开始制作牛角面包,并在 11 分钟后的时间 88 完成。(这满足了在时间 T2+L=2+6=8T_2 + L = 2 + 6 = 8 之前完成的条件。)

顾客 44 的订单由于在开始时间之后到达而被忽略。此外,顾客 11 的订单由于需要在时间 66 之前完成,因此无法完成。因此,最多可以完成 22 位顾客的订单,所以第 22 行输出 22。

关于第 33 个工作计划,面包师 33 在时间 33 开始工作,可以完成顾客 11 和 33、或者顾客 22 和 33 的订单,但不能同时完成顾客 1,21, 2 和 33 的所有订单。他们也无法完成在开始时间之后到达的顾客 44 的订单。因此,最多可以完成 22 位顾客的订单,所以第 33 行输出 22。

关于第 44 个工作计划,面包师 44 在时间 77 开始工作,无法完成任何顾客的订单。因此,第 44 行输出 00。

该样例输入满足子任务 1,2,51, 2, 5 和 66 的约束。

样例 2

该样例输入满足所有子任务的约束。

样例 3

该样例输入满足子任务 1,2,51, 2, 5 和 66 的约束。

约束条件

  • 1≤N≤4×10121 \leq N \leq 4 \times 10^{12}。
  • 1≤M≤2 000 0001 \leq M \leq 2\,000\,000。
  • 1≤L≤2×10121 \leq L \leq 2 \times 10^{12}。
  • 1≤Q≤400 0001 \leq Q \leq 400\,000。
  • 0≤Tj≤2×10120 \leq T_j \leq 2 \times 10^{12} (1≤j≤M1 \leq j \leq M)。
  • Tj≤Tj+1T_j \leq T_{j+1} (1≤j≤M−11 \leq j \leq M-1)。
  • 1≤Aq≤N1 \leq A_q \leq N (1≤q≤Q1 \leq q \leq Q)。
  • 0≤Bq≤4×10120 \leq B_q \leq 4 \times 10^{12} (1≤q≤Q1 \leq q \leq Q)。
  • 给定的值均为整数。

子任务

  1. (8 分) M≤10,Q≤100000M \leq 10, Q \leq 100000。
  2. (12 分) M≤500,Q≤100000M \leq 500, Q \leq 100000。
  3. (30 分) TM≤Bq<T1+LT_M \leq B_q < T_1 + L (1≤q≤Q1 \leq q \leq Q)。
  4. (10 分) TM≤BqT_M \leq B_q (1≤q≤Q1 \leq q \leq Q)。
  5. (22 分) M≤500000,Q≤100000M \leq 500000, Q \leq 100000。
  6. (18 分) 无附加约束。