#802. 数列分段 Section II

数列分段 Section II

题目描述

给定一个长度为 NN 的非负整数数列:

A1,A2,,ANA_1,A_2,\ldots,A_N

现在需要将这个数列划分为恰好 MM 段,并满足:

  • 每一段都不能为空;
  • 每一段中的元素在原数列中必须连续。

对于一种划分方案,计算每一段的元素和,并取这些段和中的最大值。

请你找到一种划分方案,使得这个最大值尽可能小,并输出这个最小值。

例如,对于数列:

4 2 4 5 14\ 2\ 4\ 5\ 1

将其划分为 33 段。

若划分为:

[4 2][4 5][1][4\ 2][4\ 5][1]

则三段的和分别为 669911,其中最大值为 99

若划分为:

[4][2 4][5 1][4][2\ 4][5\ 1]

则三段的和分别为 446666,其中最大值为 66

并且不存在一种划分方式,使得最大段和小于 66,因此答案为 66

输入格式

第一行输入两个正整数 NNMM,分别表示数列长度和需要划分的段数。

第二行输入 NN 个非负整数 A1,A2,,ANA_1,A_2,\ldots,A_N,表示给定数列。

输出格式

输出一个整数,表示将数列划分为 MM 个连续非空段后,能够得到的最小最大段和。

样例

5 3
4 2 4 5 1
6

数据范围

对于 20%20\% 的测试数据:

N10N \le 10

对于 40%40\% 的测试数据:

N1000N \le 1000

对于 100%100\% 的测试数据:

1N1051 \le N \le 10^5

1MN1 \le M \le N

0Ai<1080 \le A_i < 10^8

答案不超过 10910^9

来源:洛谷P1182