Ctrl K

Продажа участков по заявкам

Средняя
Вдоль дороги в ряд стоят plots участков с номерами от 0 до plots - 1. Покупатели прислали заявки bids: заявка [s, e, price] означает, что покупатель хочет купить все участки с s по e включительно целиком и заплатит за них price. Вы решаете, какие заявки принять. Один участок нельзя продать двум покупателям, а заявку можно принять только целиком. Часть участков может остаться непроданной. Верните наибольшую сумму, которую можно выручить.
Пример 1
plots=6, bids=[[0, 1, 5], [1, 3, 7], [2, 5, 6], [4, 5, 3]] → 11

Принимаем заявки [0, 1] за 5 и [2, 5] за 6 — они не пересекаются, итого 11. Самая дорогая заявка [1, 3] за 7 сочетается только с [4, 5] за 3, это 10.

Пример 2
plots=3, bids=[[0, 2, 4], [0, 0, 2], [1, 1, 2], [2, 2, 1]] → 5

Три маленькие заявки вместе дают 2 + 2 + 1 = 5 — больше, чем 4 за весь ряд.

Ограничения
  • 1 ≤ plots ≤ 10⁵
  • 1 ≤ len(bids) ≤ 10⁵
  • bids[i] = [s, e, price], 0 ≤ s ≤ e ≤ plots - 1
  • 1 ≤ price ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлова, спрятанные в тексте СредняяЗаработок водителя маршрутки СредняяЛесенка квадратов СредняяЗаклинания без соседей СредняяПодъём по строкам и столбцам Сложная
загружаем Python…
Вход
plots=6, bids=[[0, 1, 5], [1, 3, 7], [2, 5, 6], [4, 5, 3]]
Ожидается
11

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