CF883I Photo Processing

题目描述

Evlampiy 找到了一个很酷的照片处理应用程序,然而该应用有一些限制。 每张照片 $i$ 有一个对比度 $v_{i}$。为了高质量处理,程序至少需要收到 $k$ 张对比度尽可能接近的照片。 Evlampiy 已经知道他的 $n$ 张照片的对比度 $v_{i}$。现在他希望将照片分组,使每组至少有 $k$ 张照片,且每张照片必须属于且仅属于一个分组。 他认为第 $j$ 组的处理时间是该组里 $v_{i}$ 的最大值与最小值之差。由于支持多线程,整个分组方案的处理时间等于所有分组的最大处理时间。 请将 $n$ 张照片分组,使得分组方案的处理时间最小化,即所有分组处理时间中的最大值尽可能小。

输入格式

第一行包含两个整数 $n$ 和 $k$($1 \leq k \leq n \leq 3 \cdot 10^{5}$),分别表示照片数量和每组的最小照片数。 第二行包含 $n$ 个整数 $v_{1},v_{2},...,v_{n}$($1 \leq v_{i} \leq 10^{9}$),其中 $v_{i}$ 表示第 $i$ 张照片的对比度。

输出格式

输出一个整数,表示最小的分组处理时间。

说明/提示

在第一个样例中,应将照片分为两组:$[40,50]$ 和 $[110,120,130]$。第一组的处理时间为 $10$,第二组的处理时间为 $20$。二者最大值为 $20$。无法将照片分组使分组方案的处理时间小于 $20$。 在第二个样例中,应将每张照片独立分组,分为四组,每组仅有一张照片。这样处理时间最小为 $0$。 由 ChatGPT 5 翻译