Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.StringTokenizer
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val (n, r, c) = reader.readLine().split(" ").map(String::toInt)
val heights = IntArray(n) { reader.readLine().toInt() }
heights.sort()
var left = 0
var right = heights.last() - heights.first()
while (left < right) {
val mid = (left + right) / 2
var count = 0
var i = 0
while (i + c - 1 < n) {
if (heights[i + c - 1] - heights[i] <= mid) {
count++
i += c
} else {
i++
}
}
if (count >= r) right = mid else left = mid + 1
}
writer.write(left.toString())
writer.newLine()
writer.flush()
writer.close()
}