#P2118. 2024.9.22-ZJTD-第2题-小塔的子数组

2024.9.22-ZJTD-第2题-小塔的子数组

题目内容

小塔有一个长度为 nn 的数组 a1,a2,...,ana_1, a_2,...,a_n,他每次会询问一个区间[l,r][l,r],他想知道数组aa的所有长度大于等于ll且小于等于rr的子数组之和的最大值是多少。

如果数组aa可以通过从数组bb的开头删除若干(可能为零或全部)元素以及从结尾删除若干(可能为零或全部)元素得到,则数组aa是数组bb的子数组。

输入描述

第一行输入两个整数nnq(1n3000;1q106)q(1 ≤ n ≤3000;1≤ q ≤ 10^6)代表数组中的元素数量和询问次数。

第二行输入 nn 个整数 a1,a2,...,an(109ai109)a_1,a_2,...,a_n(-10^9 ≤ a_i ≤ 10^9)代表数组元素。

此后qq行,每行输入两个整数l,r(1lrn)l,r(1 ≤ l ≤ r ≤ n)代表询问的长度区间。

输出描述

对于每个询问,在一行上输出一个整数代表答案。

补充说明

本题读入量较大,python 代码可以使用

import sys

input = sys.stdin.readline

来加速输入。

样例1

输入

3 2
1 2 -1
1 2
3 3

输出

3
2

说明

对于第一个询问,长度为11的子数组有:{11}、{22}和{1-1};

长度为22的子数组有:{1,21,2}、{2,12,-1},这五个数组和的最大值为 maxmax{1,2,1,1+2,211,2,-1,1+2,2-1}=3=3

示例2

输入

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

输出

5
9
12

说明