AT_joi2021ho_e ダンジョン 3 (Dungeon 3)
题目描述
在一个 $N+1$ 层的地下城中,有 $M$ 名玩家。地下城的层数从入口开始依次编号为第 $1$ 层到第 $N+1$ 层。玩家编号从 $1$ 到 $M$。
要从地下城的某层移动到下一层,需要消耗一定的体力。玩家从第 $i$ 层($1 \leq i \leq N$)移动到第 $i+1$ 层时,会消耗 $A_i$ 的体力。此外,地下城是单向通行的,只能从第 $i$ 层向第 $i+1$ 层移动。
从第 $1$ 层到第 $N$ 层的每一层都有一座恢复之泉。在第 $i$ 层($1 \leq i \leq N$)的恢复之泉中,玩家可以花费 $B_i$ 枚金币来恢复 $1$ 点体力。只要金币足够,恢复之泉可以反复使用。但玩家的体力有上限,即使使用恢复之泉,体力也不会超过这个上限。
每位玩家 $j$($1 \leq j \leq M$)目前位于第 $S_j$ 层,当前体力为 $0$,体力上限为 $U_j$。玩家 $j$ 想要在不让体力变为负值的情况下到达第 $T_j$ 层。为此,他需要多少枚金币?
根据提供的地下城和每个玩家的信息,请编写一个程序,判断每个玩家是否可以在体力不为负的情况下到达目标层,并在可能的情况下计算所需的最小金币数。
输入格式
输入数据从标准输入中给出,格式如下。所有输入的值均为整数。
> $N$ $M$ $A_1$ $\cdots$ $A_N$ $B_1$ $\cdots$ $B_N$ $S_1$ $T_1$ $U_1$ $\vdots$ $S_M$ $T_M$ $U_M$
输出格式
输出为 $M$ 行。每一行内容为:对于玩家 $j$,输出他到达第 $T_j$ 层所需的最少金币数。如果某玩家无法到达第 $T_j$ 层,则输出 `-1`。
说明/提示
### 约束条件
- $1 \leq N \leq 200\,000$
- $1 \leq M \leq 200\,000$
- $1 \leq A_i \leq 200\,000$
- $1 \leq B_i \leq 200\,000$
- $1 \leq S_j < T_j \leq N+1$
- $1 \leq U_j \leq 100\,000\,000$
### 子任务
1. (11 分)$N \leq 3\,000$,$M \leq 3\,000$
2. (14 分)$U_1 = U_2 = \cdots = U_M$
3. (31 分)$T_j = N+1$
4. (44 分)没有额外的约束。
### 示例解释 1
对于玩家 $1$,由于体力上限为 $3$,他无法从第 $2$ 层移动到第 $3$ 层,故输出 `-1`。对于玩家 $2$,其体力上限为 $4$,他可以通过以下步骤到达第 $6$ 层:
- 在第 $1$ 层用 $8$ 枚金币将体力恢复到 $4$,然后移动到第 $2$ 层,此时体力为 $1$。
- 在第 $2$ 层用 $15$ 枚金币将体力恢复到 $4$,然后移动到第 $3$ 层,此时体力为 $0$。
- 在第 $3$ 层用 $4$ 枚金币将体力恢复到 $4$,然后移动到第 $4$ 层,此时体力为 $3$。
- 在第 $4$ 层无需使用金币,移动到第 $5$ 层,此时体力为 $2$。
- 在第 $5$ 层用 $2$ 枚金币将体力恢复到 $4$,然后移动到第 $6$ 层,此时体力为 $0$。
共花费 $29$ 枚金币,用更少的金币无法到达第 $6$ 层,因此第二行输出为 `29`。
### 示例解释 2
此输入示例满足子任务 3 的约束条件。
**本翻译由 AI 自动生成**