n серверов и m задач. weights[i] — вес сервера i, durations[j] — сколько секунд выполняется задача j.
Задача j поступает в очередь в секунду j (задача 0 — в секунду 0). Пока в очереди есть задачи и есть свободные серверы, первая задача очереди отправляется на свободный сервер с наименьшим весом, а при равенстве весов — с наименьшим номером. Если свободных серверов нет, задачи ждут; как только серверы освобождаются, очередь разбирается в порядке поступления по тем же правилам.
Сервер, взявший задачу j в секунду t, снова свободен в секунду t + durations[j] и в эту же секунду может взять следующую задачу.
Верните массив длины m, где j-й элемент — номер сервера, выполнившего задачу j.weights=[4, 2], durations=[3, 1, 2] → [1, 0, 0]
Секунда 0: задача 0 идёт на лёгкий сервер 1 до секунды 3. Секунда 1: свободен только сервер 0, задача 1 занимает его до секунды 2. Секунда 2: сервер 0 освободился, задача 2 снова на нём.
weights=[1], durations=[2, 2, 1] → [0, 0, 0]
Сервер один: задача 1 ждёт в очереди до секунды 2, задача 2 — до секунды 4.
weights=[3, 3, 5], durations=[5, 5, 1, 1] → [0, 1, 2, 2]
При равном весе выбирается сервер с меньшим номером: сначала 0, затем 1; задачи 2 и 3 достаются серверу 2.
weights=[4, 2], durations=[3, 1, 2]
[1, 0, 0]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 113 тестов на сервере, включая скрытые.