Ctrl K

Достаточно светлые места на улице

Средняя
Улица — это отрезок с целыми точками от 0 до length - 1. На ней стоят фонари: lamps[i] = [p, r] значит, что фонарь стоит в точке p и освещает все точки от max(0, p - r) до min(length - 1, p + r) включительно. Освещённость точки — это число фонарей, которые до неё достают. Для каждой точки x задан минимум need[x]. Верните, сколько точек улицы освещены не хуже своего минимума.
Пример 1
length=6, lamps=[[1, 1], [4, 2]], need=[1, 1, 2, 0, 1, 1] → 6

Первый фонарь освещает отрезок [0, 2], второй — [2, 5] (справа обрезано концом улицы). Освещённость точек: 1, 1, 2, 1, 1, 1. Требование выполнено во всех шести точках.

Пример 2
length=4, lamps=[[0, 0], [3, 1]], need=[1, 1, 1, 2] → 2

Первый фонарь светит только в точку 0, второй — в точки 2 и 3. Точка 1 тёмная, а точке 3 нужно два фонаря. Подходят точки 0 и 2.

Пример 3
length=1, lamps=[[0, 3]], need=[0] → 1
Ограничения
  • 1 ≤ length ≤ 10⁵
  • 1 ≤ len(lamps) ≤ 10⁵
  • 0 ≤ p < length, 0 ≤ r ≤ 10⁵
  • len(need) = length
  • 0 ≤ need[x] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый короткий рывок СредняяПроизведение всех остальных СредняяСтудии для записи СредняяСамый длинный отрезок с заданной суммой СредняяПакет правок на отрезках Средняя
загружаем Python…
Вход
length=6, lamps=[[1, 1], [4, 2]], need=[1, 1, 2, 0, 1, 1]
Ожидается
6

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