数列分段 II
题号:NC50235
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

对于给定的一个长度为N的正整数数列A,现要将其分成M段,并要求每段连续,且每段和的最大值最小。
例如,将数列要分成3段:
若分为[42][45][1],各段的和分别为6,9,1,和的最大值为9;
若分为[4][24][51],各段的和分别为4,6,6,和的最大值为6;
并且无论如何分段,最大值不会小于6。
所以可以得到要将数列要分成3段,每段和的最大值最小为6。

输入描述:

第1行包含两个正整数N,M;
第2行包含N个空格隔开的非负整数A_i,含义如题目所述。

输出描述:

仅包含一个正整数,即每段和最大值最小为多少。
示例1

输入

复制
5 3
4 2 4 5 1

输出

复制
6

备注:

对于的数据,有
对于的数据,有
对于的数据,有A_i之和不超过