#5135. 【模板】long_hao 的噩梦 Ⅱ / “简单”线段树

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: Star

题目描述

题目背景

众所周知,long_hao 擅长线段树,尤其擅长线段树3,这道题也和线段树有这浓厚的关系。

题目描述

现有一个长度为 n 的序列 a_n ,和 q 个查询 [l_i, r_i] ,对于每个查询,输出区间 [l_i, r_i] 内的最大子段和。

[l, r] 最大子段和的定义为:

\max_{i = l}^{r}\max_{j = i}^{r}{\sum_{t = i}^{j}{a_t}}

输入格式

第一行两个整数 n, q

第二行 n 个整数 a_i

接下来 q 行,每行两个整数 l_i, r_i ,表示一组询问,保证 l_i \le r_i

输出格式

q 行,每行一个整数,表示最大子段和。

样例

样例输入

10 5
-1 -3 -2 3 -5 -8 -5 3 -12 12
1 2
3 7
7 7
1 4
6 7

样例输出

-1
3
-5
3
-5

数据范围与提示

  • 对于 30 \% 的数据,满足 n \le 1000, q \le 1000
  • 对于 70 \% 的数据,满足 n \le 100000, q \le 100000

对于 100 \% 的数据,满足 n \le 200000, q \le 2000000, |a_i| \le 10 ^ 9