Ctrl K

Простаивающие серверы

Средняя
В кластере n серверов с номерами от 1 до n. Журнал logs записывает обращения: logs[i] = [server, time] значит, что сервер server получил запрос в момент time. Даны также длина окна window и список моментов moments. Для каждого момента q посчитайте, сколько серверов не получили ни одного запроса за отрезок времени [q - window, q] (обе границы включительно). Если q - window меньше 1, отрезок просто начинается раньше первых запросов. Верните список ответов в том же порядке, что и moments.
Пример 1
n=3, logs=[[1, 2], [3, 7], [1, 9]], window=3, moments=[5, 9] → [2, 1]

Отрезок [2, 5] задевает только запрос к серверу 1 в момент 2 — простаивают серверы 2 и 3. Отрезок [6, 9] задевает серверы 3 и 1 — простаивает один сервер 2. Ответ [2, 1].

Пример 2
n=2, logs=[[2, 10], [2, 11]], window=4, moments=[20, 12] → [2, 1]

В отрезке [16, 20] запросов нет — простаивают оба сервера. В отрезке [8, 12] работал сервер 2, простаивает только сервер 1. Ответы идут в порядке запросов: [2, 1].

Пример 3
n=1, logs=[[1, 5]], window=5, moments=[10, 11] → [0, 1]
Ограничения
  • 1 ≤ n ≤ 10⁵
  • 1 ≤ len(logs) ≤ 10⁵
  • 1 ≤ server ≤ n, 1 ≤ time ≤ 10⁶
  • 1 ≤ window ≤ 10⁵
  • 1 ≤ len(moments) ≤ 10⁵
  • 1 ≤ moments[i] ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСоседние значения ЛёгкаяСамый узкий отрезок для всех списков СложнаяРазложить анаграммы по группам СредняяБольше трети голосов СредняяСамые частые значения Средняя
загружаем Python…
Вход
n=3, logs=[[1, 2], [3, 7], [1, 9]], window=3, moments=[5, 9]
Ожидается
[2, 1]

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