atcoder#ABC267D. [ABC267D] Index × A(Not Continuous ver.)

[ABC267D] Index × A(Not Continuous ver.)

题目描述

長さ N N の整数列 A=(A1,A2,,AN) A=(A_1,A_2,\dots,A_N) が与えられます。

長さ M M A A の部分列(連続でなくてもよい) B=(B1,B2,,BM) B=(B_1,B_2,\dots,B_M) に対する、 i=1M i × Bi \displaystyle\ \sum_{i=1}^{M}\ i\ \times\ B_i の最大値を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M A1 A_1 A2 A_2 \dots AN A_N

输出格式

答えを出力せよ。

题目大意

题目描述

有一个长度为 NN 整数数列 A=(A1,A2,...,AN)A=(A_1,A_2,...,A_N)

现在假设有一个长度为 MM 的序列 BB ,并且 BBAA子序列。请找到 i=1Mi×Bi\sum_{i=1}^M i\times B_i 的最大值。

输入格式

输入按照下面的标准格式给出:

N MA1 A2  AN N\ M \newline A_1 \ A_2 \ \dots\ A_N

输出格式

一个整数,表示i=1Mi×Bi\sum_{i=1}^M i\times B_i 的最大值。

说明 / 提示

注意事项

若序列 SS 是长度为 LL 的数列 TT子序列,则 SS 是数列 TT 删除任意 i (i[0,L])i\ (i\in [0,L]) 个元素得到的。

比如说, (10,30)(10,30)(10,20,30)(10,20,30) 的字串,但是 (20,10)(20,10) 不是。

数据范围

  • 1MN20001\le M\le N\le 2000
  • 2×105Ai2×105-2\times 10^5\le A_i\le 2\times 10^5
  • 所有输入数据均为整数

样例解释

对于样例一,当 B=(A1,A4)B=(A_1,A_4) 时,i=1Mi×Bi=1×5+2×8=21\sum_{i=1}^M i\times B_i=1\times 5+2\times 8=21 。因为不可能达到 2222 或者更大的值,所以答案是 2121

4 2
5 4 -1 8
21
10 4
-3 1 -4 1 -5 9 -2 6 -5 3
54

提示

注記

数列の部分列とは、数列から 0 0 個以上の要素を取り除いた後、残りの要素を元の順序で連結して得られる数列のことをいいます。

例えば、(10,30) (10,30) (10,20,30) (10,20,30) の部分列ですが、(20,10) (20,10) (10,20,30) (10,20,30) の部分列ではありません。

制約

  • 1  M  N  2000 1\ \le\ M\ \le\ N\ \le\ 2000
  • $ -\ 2\ \times\ 10^5\ \le\ A_i\ \le\ 2\ \times\ 10^5 $
  • 入力は全て整数。

Sample Explanation 1

B=(A1,A4) B=(A_1,A_4) とした場合、$ \displaystyle\ \sum_{i=1}^{M}\ i\ \times\ B_i\ =\ 1\ \times\ 5\ +\ 2\ \times\ 8\ =\ 21 $ となります。22 22 以上の値を達成することはできないため、解は 21 21 です。