CF1574C Slay the Dragon

题目描述

最近,Petya 了解到了一款新游戏“Slay the Dragon”。顾名思义,玩家需要与龙战斗。要打败一条龙,你需要杀死它并保卫你的城堡。为此,玩家拥有 $n$ 名英雄,第 $i$ 名英雄的力量为 $a_i$。 根据游戏规则,必须派出一名英雄去杀死龙,其余所有英雄将负责防守城堡。如果龙的防御力为 $x$,则必须派出一名力量至少为 $x$ 的英雄去杀死它。如果龙的攻击力为 $y$,则负责防守城堡的所有英雄的总力量之和必须至少为 $y$。 玩家可以用 1 枚金币将任意一名英雄的力量提升 1 点。这个操作可以进行任意多次。 游戏中共有 $m$ 条龙,第 $i$ 条龙的防御力为 $x_i$,攻击力为 $y_i$。Petya 想知道,打败第 $i$ 条龙所需花费的最少金币数是多少。 注意,每条龙的战斗都是独立进行的(提升不会累积)。

输入格式

第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$)——英雄的数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^{12}$),其中 $a_i$ 表示第 $i$ 名英雄的力量。 第三行包含一个整数 $m$($1 \le m \le 2 \cdot 10^5$)——龙的数量。 接下来的 $m$ 行,每行包含两个整数 $x_i$ 和 $y_i$($1 \le x_i \le 10^{12}; 1 \le y_i \le 10^{18}$),分别表示第 $i$ 条龙的防御力和攻击力。

输出格式

输出 $m$ 行,第 $i$ 行包含一个整数,表示打败第 $i$ 条龙所需花费的最少金币数。

说明/提示

要打败第一条龙,可以将第三名英雄的力量提升 $1$,此时英雄的力量为 $[3, 6, 3, 3]$。可以选择第一名英雄去杀死龙。 要打败第二条龙,可以将第二名和第三名英雄的力量各提升 $1$,此时英雄的力量为 $[3, 7, 3, 3]$。可以选择第二名英雄去杀死龙。 要打败第三条龙,可以将所有英雄的力量都提升 $1$,此时英雄的力量为 $[4, 7, 3, 4]$。可以选择第四名英雄去杀死龙。 要打败第四条龙,无需提升英雄的力量,选择第三名英雄去杀死龙即可。 要打败第五条龙,可以将第二名英雄的力量提升 $2$,此时英雄的力量为 $[3, 8, 2, 3]$。可以选择第二名英雄去杀死龙。 由 ChatGPT 4.1 翻译