JOI 村的消防活动
JOI 村共有 N 个区块,每个区块都有一个编号从 1 到 N。这些区块按照编号顺序排列在一行中。现在,每个区块都发生了火灾,时刻 0 时,区块 i (1≤i≤N) 的火焰强度是 Si (Si>0)。
在时刻 0 时,风开始从区块 1 吹向区块 N。对于相邻的两个区块,在时刻 t (0≤t) 时,如果风上区块的火焰强度大于风下区块的火焰强度,那么在时刻 t+1 时,风下区块的火焰强度将与时刻 t 时的风上区块的火焰强度相同。否则,在时刻 t+1 时,风下区块的火焰强度将保持与时刻 t 相同。也就是说,在时刻 t (0≤t) 时,我们将区块 i (1≤i≤N) 的火焰强度记为 Si(t),那么对于 1≤t,有 Si(t)=max{Si−1(t−1),Si(t−1)}。其中,对于任意的 t (0≤t),定义 S0(t)=0,并且对于任意的 i (1≤i≤N),定义 Si(0)=Si。
作为一名消防员的你计划进行 Q 次灭火活动。你计划实施其中的一项计划。第 j 项计划 (1≤j≤Q) 在时刻 Tj,对于所有满足 Lj≤k≤Rj 的区块 k,撒下灭火剂并扑灭火焰。为了扑灭火焰强度为 s 的区块,需要使用 s 升的灭火剂。换句话说,第 j 项计划需要使用 $S_{L_j}(T_j) + S_{L_j + 1}(T_j) + \cdots + S_{R_j}(T_j)$ 升的灭火剂。
为了考虑执行哪个计划,我们想要知道每个计划所需的灭火剂的数量。
请编写一个程序,在给定时刻 0 时的火焰强度信息和灭火活动计划信息下,计算出每个计划所需的灭火剂的数量。
输入
输入以以下格式从标准输入中给出。所有给定的值都是整数。
N Q
S1 ⋯ SN
T1 L1 R1
⋮
TQ LQ RQ
输出
输出应该以 Q 行的形式输出到标准输出中。第 j 行 (1≤j≤Q) 应输出第 j 项计划所需的消防剂的数量。
约束条件
- 1≤N≤200,000。
- 1≤Q≤200,000。
- 1≤Si≤1,000,000,000 (1≤i≤N)。
- 1≤Tj≤N (1≤j≤Q)。
- 1≤Lj≤Rj≤N (1≤j≤Q)。
子任务
- (1 分) N≤200,Q≤200。
- (6 分) T1=T2=⋯=TQ。
- (7 分) Lj=Rj (1≤j≤Q)。
- (6 分) Si≤2 (1≤i≤N)。
- (80 分) 没有额外的约束条件。