书架整理
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

图书馆有  本书按顺序排成一列,第  本书的高度为 

现在要将这些书划分成恰好  个非空的连续区间,第  个区间的书放在第  层书架上。

一层书架所需的高度等于该层所有书的最大高度。

请你求出所有书架所需高度之和的最小值。

输入描述:

第一行两个整数 n,m,分别表示书的数量和书架的层数。

第二行 n 个整数 h1,h2,,hn,表示每本书的高度。

对于 100 的数据,1mn200。 1hi10^9

输出描述:

输出一个整数,表示最小的书架总高度。
示例1

输入

复制
5 2
2 4 3 7 5

输出

复制
9
示例2

输入

复制
4 4
3 1 5 2

输出

复制
11
示例3

输入

复制
6 1
4 2 6 3 5 1

输出

复制
6