Ctrl K

Самый богатый ряд домов

Средняя
Вдоль бесконечной улицы стоят дома с номерами 1, 2, 3, … В некоторых домах лежат монеты. Массив ranges описывает их: тройка ranges[i] = [l, r, c] означает, что в каждом доме с номером от l до r включительно лежит по c монет. Отрезки из ranges не пересекаются; в домах, не попавших ни в один отрезок, монет нет. Нужно выбрать length домов, стоящих подряд, и забрать все монеты из них. Верните наибольшее число монет, которое можно собрать.
Пример 1
ranges=[[2, 4, 3], [7, 8, 5], [12, 12, 9]], length=6 → 19

Лучше всего взять дома с 7-го по 12-й: 5 + 5 в домах 7 и 8, по нулю в домах 9–11 и 9 в доме 12, итого 19. Окно со 2-го по 7-й даёт только 3 · 3 + 5 = 14.

Пример 2
ranges=[[5, 9, 2]], length=10 → 10

Окно из 10 домов целиком накрывает дома 5–9, в каждом по 2 монеты: 5 · 2 = 10.

Пример 3
ranges=[[1, 3, 4], [4, 6, 1]], length=3 → 12

Дома 1–3 дают 4 + 4 + 4 = 12, любое окно правее захватывает дома с одной монетой и выходит меньше.

Ограничения
  • 1 ≤ ranges.length ≤ 10⁵
  • ranges[i] = [l, r, c], 1 ≤ l ≤ r ≤ 10⁹, 1 ≤ c ≤ 1000
  • отрезки [l, r] попарно не пересекаются
  • 1 ≤ length ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодравнять числа прибавлением СредняяКовёр на окрашенные отрезки СредняяПодвинуть числа навстречу СредняяКрасота клумб на бюджете СложнаяСколько влезет в бюджет Лёгкая
загружаем Python…
Вход
ranges=[[2, 4, 3], [7, 8, 5], [12, 12, 9]], length=6
Ожидается
19

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