对于数列 a,定义区间 [l,r] 的分值为 \sum_{i=l}^ra_i^2-\sum_{i=l}^ra_i-k\times(r-l+1) 。其中 k 是一个给定的参数。
你获得了一个很短的数列,希望找到一个分值最大的区间,这个问题你可以轻松解决,你可以把所有的区间以及它们的分值都找了出来。
但是不服输的小途想要挑战你,因此他给了你一个很长的数列,你还能找到所有非空区间的分值的最大值吗?
提示:
\sum_{i=l}^ra_i=a_l+a_{l+1}+a_{l+2}+...+a_r
形式化题意:
给定 n,k 和序列 {a_n} ,试求 \mathop{\max}\limits_{1<=l<=i<=r} \{\sum_{i=l}^ra_i^2-\sum_{i=l}^ra_i-k\times(r-l+1)\} 的结果。
第一行两个正整数,分别表示 n,k。
接下来一行 n 个正整数,表示数列 a。
变量含义如上述所示。
输出一个整数,表示答案。
6 0 1 2 3 4 5 6
70
1 1234 10
-1144
样例解释1
假如选择了区间 [1,2],分值是 1^2+2^2−(1+2)−2*k=2
假如选择了区间 [1,6],分值是 1^2+2^2+3^2+4^2+5^2+6^2−(1+2+3+4+5+6)−6*k=70 。
可以证明,不存在分值大于 70 的区间,因此答案就是 70。
样例解释2
这个数列只有一个长度为 1 的区间,分值为 −1144。
对于 50% 的数据,n≤1000。
对于另外 50% 的数据,没有特殊限制。
对于 100% 的数据, 1≤n≤10^6,0≤a i≤10^6,0≤k≤10^9 。