割竿榄
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有一块宽度为 1 ,长度为 n 的土地,上面均匀种着 n 棵高度不同的竿榄。
现在强子要割掉一些去售卖,强子会割 m 次,每一次可以割相邻的 3 棵竿榄到同一高度(高度不足的部分可以忽略,三棵中可以都没有被割到),每次割的区域必须是和上一次相连或者重叠的(每两次操作的竿榄之间的距离为 0 )。
每割完一次之后所有竿榄会长高 1 单位,但是如果把竿榄高度割到 0 那么竿榄就不会再生长了。
问割 m 次之后最多能售卖多少单位的竿榄。

输入描述:

第一行两个正整数 n代表土地的长度,m表示割的次数。

第二行n个正整数 表示每块土地种植竿榄的初始高度。

输出描述:

输入一个整数,表示最终割下来了多少单位竿榄
示例1

输入

复制
7 2
1 4 3 2 5 6 7

输出

复制
30

说明

样例一:
初始状态
1 4 3 2 5 6 7   ans = 0
割一次
1 0 0 0 5 6 7    ans =  0 + 9
生长
2 0 0 0 6 7 8
割第二次
2 0 0 0 0 0 0    ans = 9 + 21
ans = 30
示例2

输入

复制
9 5
1 2 3 4 5 6 7 8 9

输出

复制
72

说明

样例二
初始状态
1 2 3 4 5 6 7 8 9    ans = 0
割一次
1 1 1 4 5 6 7 8 9    ans = 0 + 3
生长
2 2 2 5 6 7 8 9 10
割第二次
2 2 2 1 1 1 8 9 10    ans = 3 + 15
生长
3 3 3 2 2 2 9 10 11
割第三次
3 3 3 2 2 2 0 0 0    ans = 18 + 30
生长
4 4 4 3 3 3 0 0 0
割第四次
4 4 4 0 0 0 0 0 0    ans = 48 + 9
生长
5 5 5 0 0 0 0 0 0
割第五次
0 0 0 0 0 0 0 0 0    ans = 57 + 15
ans = 72