Ctrl K

Самая загруженная переговорка

Сложная
В офисе rooms переговорных с номерами от 0 до rooms - 1. Дан список встреч meetings, где meetings[i] = [start, end] означает, что встреча запланирована на полуинтервал времени [start, end). Все start различны. Встречи распределяются так: - встреча идёт в свободную переговорку с наименьшим номером; - если свободных нет, встреча откладывается до освобождения какой-нибудь переговорки и длится столько же, сколько планировалось; - когда переговорка освобождается, её первой получает та из ожидающих встреч, у которой исходное время начала раньше. Верните номер переговорки, где прошло больше всего встреч. Если таких несколько — наименьший из номеров.
Пример 1
rooms=2, meetings=[[1, 6], [0, 4], [2, 3], [5, 8]] → 0

В момент 0 встреча [0, 4) занимает комнату 0, в момент 1 встреча [1, 6) — комнату 1. Встрече [2, 3) места нет; в момент 4 освобождается комната 0, и она идёт туда как [4, 5). Встреча [5, 8) в момент 5 снова получает свободную комнату 0. Итого в комнате 0 три встречи, в комнате 1 — одна.

Пример 2
rooms=2, meetings=[[0, 10], [1, 3], [4, 6], [7, 9]] → 1

Комнату 0 до момента 10 занимает длинная встреча, а три короткие по очереди проходят в комнате 1. Ответ 1.

Пример 3
rooms=3, meetings=[[0, 9], [1, 9], [2, 4], [5, 7], [8, 9]] → 2
Ограничения
  • 1 ≤ rooms ≤ 10⁴
  • 1 ≤ len(meetings) ≤ 10⁵
  • 0 ≤ start < end ≤ 5 · 10⁵
  • Все значения start различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазобрать стопки поровну ЛёгкаяВычёркивание с самого маленького СредняяОстаток на полке после заказов СредняяСамый узкий отрезок для всех списков СложнаяВитрина: выручка плюс разнообразие Сложная
загружаем Python…
Вход
rooms=2, meetings=[[1, 6], [0, 4], [2, 3], [5, 8]]
Ожидается
0

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 76 тестов на сервере, включая скрытые.