В рубрике Авито есть один верхний слот выдачи. Продавцы купили поднятия: заявка [start, end) занимает слот с минуты start до минуты end, не включая её.
Две заявки конфликтуют, если их отрезки пересекаются; касание концами ([10, 20) и [20, 30)) — не конфликт. Посчитайте, сколько заявок придётся снять, чтобы оставшиеся не конфликтовали, если снимать как можно меньше.
В работе: Снятые заявки возвращают деньги или переносят: чем меньше снятых, тем меньше возвратов.
Пример 1
Ввод
slots = [[0, 30], [10, 20], [20, 40], [35, 50]]
Вывод
2
Без конфликтов больше двух не оставить, например [10, 20) и [20, 40): снять две заявки.
Пример 2
Ввод
slots = [[0, 60], [60, 120]]
Вывод
0
Касание концами — снимать нечего.
Ограничения
- 0 ≤ n ≤ 10⁵
- 0 ≤ start < end ≤ 10⁹
- Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль.
def min_removed(slots):
Источник: наша задача на данных Авито. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.