小塔有一个长度为 n 的数组 a1,a2,...,an,他每次会询问一个区间[l,r],他想知道数组a的所有长度大于等于l且小于等于r的子数组之和的最大值是多少。
如果数组a可以通过从数组b的开头删除若干(可能为零或全部)元素以及从结尾删除若干(可能为零或全部)元素得到,则数组a是数组b的子数组。
第一行输入两个整数n和q(1≤n≤3000;1≤q≤106)代表数组中的元素数量和询问次数。
预处理前缀和,n2求出每个长度的的子序列的最大值,在一次n2预处理一次长度l到r的子序列最大值即可
#include <bits/stdc++.h>
using namespace std;