Ctrl K

Сколько отрезков лишние

Средняя
Дан массив неотрицательных чисел needs и список отрезков ranges, где ranges[j] = [l, r]. Каждый отрезок позволяет уменьшить на 1 любые ячейки с индексами от l до r включительно (какие именно — решаете вы для каждой ячейки отдельно). Порядок отрезков не важен. Цель — получить массив из одних нулей. Некоторые отрезки можно выбросить заранее. Верните наибольшее число отрезков, которые можно выбросить так, чтобы оставшихся всё ещё хватало. Если не хватает даже всех отрезков, верните -1.
Пример 1
needs=[1, 0, 1], ranges=[[0, 2], [0, 0], [2, 2], [1, 1]] → 3

Одного отрезка [0, 2] хватает: он снимает единицу с ячеек 0 и 2 и не трогает ячейку 1. Остальные три отрезка лишние.

Пример 2
needs=[2, 1], ranges=[[0, 1], [1, 1], [0, 0]] → 1

Ячейке 0 нужны оба отрезка, которые её покрывают: [0, 1] и [0, 0]. Первый заодно обнуляет ячейку 1, так что [1, 1] можно выбросить.

Пример 3
needs=[0, 3], ranges=[[1, 1], [0, 1]] → -1

Ячейку 1 покрывают только два отрезка, а ей нужно три.

Ограничения
  • 1 ≤ len(needs) ≤ 10⁵
  • 0 ≤ needs[i] ≤ 10⁵
  • 1 ≤ len(ranges) ≤ 10⁵
  • ranges[j] = [l, r], 0 ≤ l ≤ r < len(needs)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяМеньше всего комнат СредняяЗадания с перерывом на остывание СредняяМетки вразнобой СредняяХватит ли мест в шаттле Средняя
загружаем Python…
Вход
needs=[1, 0, 1], ranges=[[0, 2], [0, 0], [2, 2], [1, 1]]
Ожидается
3

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