货物分组
题号:NC53870
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

Venn要对货物打包。

每个货物有一定的重量,她可以用若干个箱子来装下所有的货物,但是每个箱子中物品重量总和不能超过W

Venn有一个独特的习惯,在装货过程中,某一个箱子里货物的编号必须是一个连续的区间,并且必需依次使用箱子按照物品的编号顺序装入,具体来讲编号为1的箱子一定包含1号物品,编号最大的箱子一定包含n号物品。

对于第i个箱子,如果里面装的货物总重量为w,那么费用为i*w 。

另外对于每一个箱子,在通过门卫时还会被收税,税款是箱子中重量最大的货物的重量减去重量最小的货物的重量。

她想知道,把所有货物打包并运过门卫所需要的最小费用为多少。
注:收取的税款也算作费用

点击下载大样例

输入描述:

第一行两个整数n,W,分别表示货物个数以及每个箱子最大重量。

接下来一行n个正整数a_1...a_n,a_i表示编号为i的货物的重量。

输出描述:

一行一个正整数表示最小费用。
示例1

输入

复制
5 10
5 7 8 2 1

输出

复制
56

说明

每一个单独分一箱最优。

备注:

对于 的数据,

对于的数据,

对于的数据,

对于的数据,