编程题
区间修改、区间覆盖、区间最大值、区间历史最大值 ### 题目描述 给定一个长度为 $N$ 的数组 $a$,其初值分别为 $a_1,a_2,...,a_N$。 现有 $Q$ 个操作,操作有以下两种: + `1 x y`,询问区间 $[x,y]$ 的最大值。 + `2 x y`,询问区间 $[x,y]$的历史最大值。 + `3 x y z`:将区间 $[x,y]$ 中的每个数增加 $z$ + `4 x y Z`:将区间 $[x,y]$ 中的每个数都变成 $z$ ### 输入描述 输入第 $1$ 行包含两个正整数 $N,Q$,分别表示数组 $a$ 的长度和操作的个数。 第 $2$ 行包含 $N$ 个非负整数 $a_1,a_2,...,a_N$,表示数组 $a$ 元素的初值。 第 $3\sim Q-2$ 行每行表示一个操作,格式为以下四种之一: - `1 x y` - `2 x y` - `3 x y z` - `4 x y Z` 其含义如题所述。 $1\leq N,Q \leq 10^5$,$1\leq x \leq y \leq N$,$-10^9\leq z,a_i\leq 10^9$。 ### 输出描述 对于每个操作 $1$、操作 $2$ 输出一个整数表示答案。 ### 输入输出样例 #### 示例 1 >输入 ```txt 5 6 1 2 3 4 5 4 1 5 1 1 1 5 2 1 5 3 1 5 1 1 1 5 2 1 5 ``` >输出 ```txt 1 5 2 5 ```
查看答案
赣ICP备20007335号-2