#xDSlydlt40x4301. 你能回答这些问题吗 Can you answer on these queries III

你能回答这些问题吗 Can you answer on these queries III

题目描述

给定长度为 NN 的数列 AA,以及 MM 条指令,每条指令可能是以下两种之一:

  1. 1 x y,查询区间 [x,y][x,y] 中的最大连续子段和,即 maxxlryi=lrA[i]\max_{x \le l \le r \le y} \sum_{i=l}^r A[i]
  2. 2 x y,把 A[x]A[x] 改成 yy

对于每个查询指令,输出一个整数表示答案。

输入格式

第一行两个整数 N,MN,M

第二行 NN 个整数 A[i]A[i]

接下来 MM 行每行 33 个整数 k,x,yk,x,yk=1k=1 表示查询(此时如果 x>yx>y,请交换 x,yx,y),k=2k=2 表示修改。

输出格式

对于每个查询指令输出一个整数表示答案。

每个答案占一行。

样例

输入样例:

5 3
1 2 -3 4 5
1 2 3
2 2 -1
1 3 2

输出样例:

2
-1

样例解释

初始数组:[1,2,3,4,5][1, 2, -3, 4, 5]

  1. 查询 [2,3][2,3]:子段 [2,2][2,2] 和为 22[3,3][3,3] 和为 3-3[2,3][2,3] 和为 1-1,最大为 22,输出 22
  2. 修改 A[2]=1A[2]=-1:数组变为 [1,1,3,4,5][1, -1, -3, 4, 5]
  3. 查询 [3,2][3,2]:由于 x>yx>y,交换为 [2,3][2,3],子段 [2,2][2,2] 和为 1-1[3,3][3,3] 和为 3-3[2,3][2,3] 和为 4-4,最大为 1-1,输出 1-1

数据范围

  • N500000N \le 500000
  • M100000M \le 100000
  • 1000A[i]1000-1000 \le A[i] \le 1000

时空限制

  • 时间限制:1 秒
  • 空间限制:64 MB