Контест Middle Многопоточность и модель памяти обновлено

Пул потоков: кто и когда выполнит задачу

Условие

Пул из k рабочих потоков (номера 1..k) получает n задач сразу в момент 0 в указанном порядке, у задачи i длительность tᵢ. Очередная задача из очереди достаётся потоку, который освободится раньше всех; если таких несколько, потоку с меньшим номером. Изначально все потоки свободны с момента 0.

Для каждой задачи выведите номер потока и момент начала, а последней строкой момент, когда все задачи будут выполнены.

Ввод: n и k (1 ≤ n, k ≤ 2000), затем n длительностей (0 ≤ tᵢ ≤ 10⁹).

Вывод: n строк поток начало, затем время окончания.

Пример 1

Ввод:

5 2
3 1 2 0 4

Вывод:

1 0
2 0
2 1
1 3
1 3
7

Пример 2

Ввод:

3 5
7 7 7

Вывод:

1 0
2 0
3 0
7

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.