CF173E Camping Groups
题目描述
一个俱乐部想要组织成员去露营。为了更好地组织活动,俱乐部负责人决定将成员分成若干小组。
俱乐部成员 $i$ 有一个责任值 $r_{i}$ 和一个年龄值 $a_{i}$。一个小组是一些俱乐部成员的非空子集,并且有一个成员担任组长。组长应当是该组中最有责任心的成员之一(即他的责任值不小于该组任何其他成员),并且他与组内其他任意成员之间的年龄差的绝对值不超过 $k$。
某些俱乐部成员是好友,希望在同一个小组里。他们也希望所在的小组尽可能大。现在你需要编写程序,回答多个类似于“包含成员 $x$ 和成员 $y$ 的最大小组有多大?”的问题。$x$ 或 $y$ 都可能是组长。
输入格式
第一行包含两个整数 $n$ 和 $k$($2 \leq n \leq 10^{5}, 0 \leq k \leq 10^{9}$),表示俱乐部成员人数和一个小组内的年龄限制。
第二行包含 $n$ 个整数 $r_{1}, r_{2},\ldots, r_{n}$($1 \leq r_{i} \leq 10^{9}$),$r_{i}$ 表示第 $i$ 个俱乐部成员的责任值。第三行同样包含 $n$ 个整数 $a_{1}, a_{2},\ldots, a_{n}$($1 \leq a_{i} \leq 10^{9}$),$a_{i}$ 表示第 $i$ 个俱乐部成员的年龄。
接下来一行包含一个整数 $q$,表示你需要回答的问题数量($1 \leq q \leq 10^{5}$)。接下来的 $q$ 行,每行包含两个用空格分隔的整数 $x_{i}$ 和 $y_{i}$($1 \leq x_{i}, y_{i} \leq n, x_{i} \neq y_{i}$),表示应该在同一小组内的两个俱乐部成员的编号。
输出格式
对于每个问题,输出一行,表示包含成员 $x$ 和 $y$ 的最大小组规模。如果无法组成这样的组,输出 $-1$。
说明/提示
对于第一个询问,包含成员 3 和 5 的最大小组为 $\{1,3,4,5\}$,其中成员 3 是组长。
对于第二个询问,成员 2 应作为组长,小组为 $\{1,2,3\}$。
对于第三个询问,小组组长的年龄应该是 3,所以唯一的组长只能是成员 3,而他的责任值小于成员 2,因此无法组成小组。
第四个询问的小组与第一个相同。
由 ChatGPT 5 翻译