3393. 线段树:区间增加与覆盖

单点时限: 3.0 sec

内存限制: 256 MB

有数列 $a_1, a_2, \ldots, a_n$,你需要支持以下三种操作:

  • 操作 $1$:给出参数 $l,r,d$,令 $a_i = a_i + d, \forall l \leq i \leq r$;
  • 操作 $2$:给出参数 $l,r,d$,令 $a_i = d, \forall l \leq i \leq r$;
  • 操作 $3$:给出参数 $l,r$,求 $a_l + a_{l+1} + \ldots + a_r, \max {a_l, a_{l+1}, \ldots, a_r}, \min {a_l, a_{l+1}, \ldots, a_r}$。

输入格式

第一行,一个整数 $n$ $(1 \leq n \leq 5 \cdot 10^5)$。

第二行,$n$ 个整数 $a_1, a_2, \ldots, a_n$。

第三行,一个整数 $q$ $(1 \leq q \leq 5 \cdot 10^5)$。

接下来 $q$ 行,每行表示一个查询,查询格式如下所示:

  • 1 l r d,或
  • 2 l r d,或
  • 3 l r

其中:$1 \leq l \leq r \leq n$。

所有数的绝对值不超过 $10^7$。

输出格式

对于查询 $3$,输出一行三个整数,依次为和、最大值、最小值。

样例

Input
5
1 2 3 4 5
7
1 1 1 -2
3 1 2
1 3 5 1
3 1 5
3 3 3
2 3 3 3
3 3 3
Output
1 2 -1
16 6 -1
4 4 4
3 3 3

48 人解决,75 人已尝试。

82 份提交通过,共有 611 份提交。

5.0 EMB 奖励。

创建: 6 年,6 月前.

修改: 6 年,6 月前.

最后提交: 1 周,5 天前.

来源: N/A

题目标签