#1713. 营地

营地

题目描述:

为保障信息学营地活动顺利开展,所有老师和学生需先到市区指定集合点,再乘坐营地安排的大巴车前往营地。目前有 n 位老师和学生已陆续抵达集合点,其中第 i 个人的到达时间为 t_i。营地共调配了 m 辆大巴车负责接送,每辆大巴车的最大载客量为 c 人。营地负责人需在集合点协调老师和学生乘车,规则如下: 将已到达的老师和学生依次安排至大巴车,当某辆大巴车因最后 1 人上车而达到载客上限 c 时,该大巴车立即发车前往营地。若所有老师和学生全部安排完毕后仍有未坐满的大巴车(未达载客上限),则该大巴车也需立即发车。 为提升参与体验,营地负责人希望尽可能缩短每个人的等待时间(个人等待时间 = 所乘大巴车的发车时间 - 个人到达时间)。现需通过合理调度,计算出 “等待时间最长的人员” 其等待时间的最小值(即所有可能调度方案中,最大等待时间的最优解)。

输入格式:

从文件 camp.in 中读取数据,格式如下: 第 1 行:3 个正整数 n、m、c,分别代表老师和学生总数、大巴车总数、每辆大巴车的最大载客量。 第 2 行:n 个空格分隔的整数,依次表示每个人的到达时间 t_i。

输出格式:

输出到文件camp. out 中。 输出 1 行,包含所有到达的人中最大等待时间的最小值。

样例:

6 3 2
1 1 10 14 4 3

4
20 4 5
3 7 2 4 6 17 16 20 8 7 23 24 20 12 15 2 13 16 16 17


7

提示

【样例 1 解释】 首先对人员到达时间排序:1、1、3、4、10、14。 调度方案: 第 1 辆大巴车:搭载前 2 人(到达时间 1、1),满员发车,发车时间为最后 1 人到达时间(1),两人等待时间均为 1-1=0。 第 2 辆大巴车:搭载接下来 2 人(到达时间 3、4),满员发车,发车时间为 4,两人等待时间分别为 4-3=1、4-4=0。 第 3 辆大巴车:搭载最后 2 人(到达时间 10、14),满员发车,发车时间为 14,两人等待时间分别为 14-10=4、14-14=0。 此时等待时间最长的人员等待了 4 个单位时间,为所有可行方案中的最小值。

【样例 2 解释】 对人员到达时间排序:2、2、3、4、6、7、7、8、12、13、15、16、16、16、17、17、20、20、23、24。 按每车 5 人分配 4 辆大巴车,通过优化调度(让同车人员到达时间尽可能接近),最终等待时间最长的人员仅需等待 7 个单位时间,为最优解。

数据范围

保证对于 100% 的数据, 1 ≤ n ≤ 10^5 ,对于任意的 0 ≤ ti ≤ 10^9 ,1 ≤ m ≤ 10^5 , 1 ≤ c ≤ n。