luogu#P6792. [SNOI2020] 区间和

[SNOI2020] 区间和

题目描述

有一个长度为 nn 的整数数列 a1,a2,,ana_1,a_2,\cdots,a_n(可能含有负数)。现在对其进行 qq 次操作,每次操作是以下二者之一:

  • 0 l r x 表示对于 [l,r][l,r],将 aia_i 赋值为 max(ai,x)\max(a_i,x)
  • 1 l r 求区间 [l,r][l,r] 的最大子段和。即:$\max(0, \max_{l\le u\le v\le r} (\sum_{i=u}^v a_i))$。

输入格式

第一行两个正整数 n,qn,q,分别表示序列长度和操作次数;

第二行 nn 个正整数 a1,a2,,ana_1,a_2,\cdots,a_n 表示初始的序列;

接下来 qq 行,每行形如 0 l r x1 l r 表示一次操作。

输出格式

对于每个形如 1 l r 的操作,输出一行一个整数表示答案。

5 7
2 -4 6 -5 5
1 1 5
0 1 5 -4
1 1 5
0 3 4 -1
1 1 5
0 1 3 -1
1 1 5
6
7
10
11

提示

样例说明

对于样例 11

  • 11 次询问时序列为 2,4,6,5,52,-4,6,-5,5,最大子段和为 66
  • 22 次询问时序列为 2,4,6,4,52,-4,6,-4,5,最大子段和为 77
  • 33 次询问时序列为 2,4,6,1,52,-4,6,-1,5,最大子段和为 1010
  • 44 次询问时序列为 2,1,6,1,52,-1,6,-1,5,最大子段和为 1111

数据规模与约定

对于所有数据,$1\le n\le10^5, 1\le q\le 2\times 10^5, |a_i|, |x|\le 10^9$。

  • 对于 10%10\% 的数据,n,q200n,q \le 200
  • 对于另外 10%10\% 的数据,n,q2000n,q \le 2000
  • 对于另外 25%25\% 的数据,每次操作 00 均满足 l=rl=r(即,只有单点修改);
  • 对于另外 20%20\% 的数据,每次操作 11 均满足 l=1,r=nl=1,r=n(即,只有全局询问);
  • 对于余下 35%35\% 的数据,无特殊限制。

有来自出题人的 3 个 hack 数据点