Перевозчику, работающему с Ozon, предложили рейсы [start, end, money]: часы начала и окончания и выплату в рублях. У перевозчика одна фура, рейсы не могут идти одновременно; следующий можно начать в тот же час, когда закончился предыдущий.
Верните наибольшую сумму выплат за набор рейсов, которые фура успеет выполнить.
В работе: На неделю в кабинете перевозчика 400 рейсов: жадный выбор «самый дорогой первым» ошибается уже на трёх рейсах, а перебор наборов — 2⁴⁰⁰.
Пример 1
Ввод
trips = [[0, 6, 30000], [5, 9, 14000], [6, 12, 25000], [10, 14, 12000]]
Вывод
55000
Рейсы 0–6 и 6–12: 55 000 ₽.
Пример 2
Ввод
trips = [[0, 10, 50000], [0, 5, 20000], [5, 10, 20000]]
Вывод
50000
Один длинный рейс выгоднее двух коротких.
Ограничения
- 1 ≤ n ≤ 10⁵
- 0 ≤
start<end≤ 10⁹ - 1 ≤
money≤ 10⁶ - Лимит — 2 с на тест (2000 мс).
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль.
def best_truck_plan(trips):
Источник: наша задача на данных Ozon. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.