0 до workers - 1 стоят по кругу. Каждый одновременно делает не больше одной задачи. Задачи приходят по очереди: задача i (нумерация с нуля) появляется в момент arrivals[i] и занимает durations[i] единиц времени. Массив arrivals строго возрастает.
Когда приходит задача i, её распределяют так:
- если все работники заняты, задача теряется;
- иначе её берёт работник i % workers, если он свободен;
- если он занят, проверяются следующие по кругу: i % workers + 1, затем следующий и так далее, после workers - 1 снова идёт 0. Задачу получает первый свободный.
Работник, взявший задачу в момент t с длительностью d, снова свободен начиная с момента t + d (и может взять задачу, пришедшую ровно в этот момент).
Верните номера всех работников, которые выполнили больше всего задач. Порядок номеров любой.workers=2, arrivals=[1, 2, 3, 4], durations=[4, 1, 1, 1] → [1]
Задача 0 уходит работнику 0 до момента 5. Задача 1 — работнику 1 (до 3). Задача 2 хочет работника 0, он занят, и по кругу она достаётся работнику 1, который как раз освободился в момент 3. Задача 3 тоже хочет работника 1 и получает его в момент 4. Работник 1 выполнил три задачи, работник 0 — одну.
workers=3, arrivals=[1, 2, 3, 4], durations=[10, 10, 10, 10] → [0, 1, 2]
Первые три задачи разбирают всех работников, четвёртая приходит, когда все заняты, и теряется. У каждого по одной задаче — все трое самые загруженные.
workers=4, arrivals=[1, 3, 5, 7, 9], durations=[1, 1, 1, 1, 1] → [0]
Все свободны, поэтому каждая задача попадает к своему работнику i % 4: задачи 0 и 4 — к работнику 0, у него две задачи.
workers ≤ 10⁵arrivals.length = durations.length ≤ 10⁵arrivals[i], durations[i] ≤ 10⁹arrivals строго возрастаетworkers=2, arrivals=[1, 2, 3, 4], durations=[4, 1, 1, 1]
[1]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 173 теста на сервере, включая скрытые.