#LQ11203. 十五届蓝桥省赛中级组T6

十五届蓝桥省赛中级组T6

第十五届蓝桥杯省赛c++中级组t6

题目描述

n 件物品排成一排,编号分别为:123...n1、2、3...n身的价值,价值分别为:a1a2a3...ana_1、a_2、a_3...a_n

请将这 nn件物品拆分为kk组(不改变物品的顺序),要求每组内至少有一件物品,分别统计每组物品的价值之和,并找出其中的最大值。请设计一种分组方案,使这个最大值尽可能小,并输出这个最大值。

例如:n=5n=5,表示有55 件物品,这5 件物品的价值分别是 613846、1、3、8、4;k=2k=2,表示要将这 55 件物品拆分为两组,有如下方案:

1.[6][6][1384][1,3,8,4],两组物品各自的价值之和为 6和 16,最大值为16;

2.[61][6,1][384][3,8,4],两组物品各自的价值之和为 7和 15,最大值为15;

3.[613][6,1,3][84][8,4],两组物品各自的价值之和为 10 和 12,最大值为 12;

4.[6138][6,1,3,8][4][4],两组物品各自的价值之和为 18 和 4,最大值为18;

其中第 3 种方案,价值之和的最大值 12 在 4 种方案中最小,故输出1212.

输入格式

第一行输入一个整数n(1n1000)n(1≤n≤1000),表示物品的数量

第二行输入 n 个整数a1a2,...an(1ai105) a_1、a_2,...a_n(1≤a_i≤10^5)aia_i表示ii号物品的价值,整数之间以一个空格隔开

第三行输入一个整数k(1kn)k(1≤k≤n),表示将nn件物品拆分的组数

输出格式

输出一个整数,表示按照题目要求得到的最大值

样例 #1

样例输入 #1

5
6 1 3 8 4 
2

样例输出 #1

12