import java.util.LinkedList import java.util.PriorityQueue fun main() { val (n, cores) = readln().split(" ").take(2).map { it.toInt() } val printouts = ArrayList(n + 1) printouts.add(0) val queue = readln().split(" ").map { it.toLong() }.toCollection(LinkedList()) val procesQueue = PriorityQueue() repeat(cores) { procesQueue.add(0L) } while(queue.isNotEmpty()) { val current = queue.removeFirst() val time = procesQueue.poll() + current printouts.add(time) procesQueue.add(time) } println(printouts.sorted().zipWithNext { a, b -> b - a }.max()) // Requires Kotlin 1.7 }