[ONTAK2015] Stumilowy sad
题目背景
Subtask 0 为原数据,Subtask 1 为 hack 数据。
题目描述
在一条笔直的道路上从左到右一共有 $n$ 片区域,每一片区域一开始都种着一棵树,其中第 $i$ 片区域种着高度为 $h_i$ 的树。接下来你需要处理 $q$ 个操作:
- `1 l r c`:将第 $l$ 片区域到第 $r$ 片区域内的所有树的高度拔高 $c$ 个单位。
- `2 l r h`:将一把刀固定在高度为 $h$ 的空中,对第 $l$ 片区域到第 $r$ 片区域内的所有树进行砍伐。
- `3 l r h`:往第 $l$ 片区域到第 $r$ 片区域内的每个区域种上一棵高度为 $h$ 的树。
- `4 l r`:查询第 $l$ 片区域到第 $r$ 片区域内最高的树的高度。
注:本题中的高度为相对于某个水平面的高度,也就是说**可能会有负数的出现**。
输入输出格式
输入格式
第一行,两个整数 $n, q$;
第二行,$n$ 个整数 $h_1, h_2, \cdots, h_n$;
接下来 $q$ 行,每行三或四个整数 $op, l, r, c$、$op, l, r, h$ 或 $op, l, r$。
输出格式
若干行,每行一个整数,表示对应查询的结果。
输入输出样例
输入样例 #1
2 5
3 7
4 1 2
1 1 2 1
4 1 2
3 1 1 5
4 1 2
输出样例 #1
7
8
8
说明
对于 $100\%$ 的数据,$1 \leq n, q \leq 5 \times 10^5$,$1 \leq h_i \leq 10^9$,$1 \leq l \leq r \leq n$,$0 \leq |c| \leq 500$,$1 \leq h \leq 10^9$。