#D0494. 找最大值

找最大值

题目描述

33DAI 有一个长度为 nn 的序列:a1ana_1 \sim a_n。他想对这个序列进行 mm 次操作,每次操作用如下形式之一描述:

  • 1 x y:查询 axaya_x \sim a_y 的最大值。
  • 2 x y:在 axa_x 的后面插入一个新的数 yy
  • 3 x y:把 axa_x 修改为 yy
  • 4 x y:把 axaya_x \sim a_y 这些数都删除。

输入格式

第一行两个整数:n,mn, m

第二行为空格隔开的 nn 个正整数:a1ana_1 \sim a_n

接下来 mm 行,每行都是空格隔开的三个整数,操作如上所述。

输出格式

对于每个 1 操作,输出一行,为对应的最大值。

样例

5 6
1 2 3 4 5
1 1 5
2 1 7
1 2 4
4 2 5
3 1 10
1 1 2
5
7
10

样例解释

  • 初始:1 2 3 4 5
  • 1 1 5:查询 (1 2 3 4 5) 的最大值,输出 55
  • 2 1 7:在第一个元素后面插入 77,序列变为 1 7 2 3 4 5
  • 1 2 4:查询第 22 到第 44 个元素 (7 2 3) 的最大值,输出 77
  • 4 2 5:删除第 22 到第 55 个元素,序列变为 1 5
  • 3 1 10:把第 11 个元素改为 1010,序列变为 10 5
  • 1 1 2:查询第 11 到第 22 个元素 (10 5) 的最大值,输出 1010

数据范围与提示

  • 子任务 1(30 分):只有操作 1 和操作 2,且保证每次操作 1 对应的 x,yx, y 都是从 11 到当前数组长度。
  • 子任务 2(30 分):只有操作 1 和操作 3
  • 子任务 3(40 分):无特殊限制。
  • 对于 100%100\% 的数据,1n,m1001 \le n, m \le 1001ai1091 \le a_i \le 10^9,保证所有操作合法,且插入或修改的数在 11091 \sim 10^9 范围内。