Ctrl K

Сервер включён как можно меньше

Сложная
Есть сервер, который может выполнять сколько угодно работ одновременно. Каждая работа задана тройкой jobs[i] = [start, end, duration]: ей нужно суммарно duration секунд работы сервера внутри отрезка секунд от start до end включительно. Эти секунды не обязаны идти подряд. В каждую секунду сервер либо включён (и тогда в ней может продвигаться любая работа, чьё окно содержит эту секунду), либо выключен. Верните наименьшее число секунд, в течение которых сервер должен быть включён, чтобы все работы были выполнены.
Пример 1
jobs=[[1, 4, 2], [3, 6, 2], [6, 8, 1]] → 3

Включим сервер на секунды 3, 4 и 6: первая работа идёт в 3 и 4, вторая — в 4 и 6, третья — в 6. Итого 3 секунды.

Пример 2
jobs=[[2, 3, 2], [5, 5, 1]] → 3

Окна не пересекаются, и обе работы занимают окна целиком: 2 + 1 = 3.

Пример 3
jobs=[[1, 10, 3], [4, 6, 3]] → 3

Секунды 4, 5, 6 нужны второй работе, а первая может работать в них же.

Ограничения
  • 1 ≤ len(jobs) ≤ 2000
  • 1 ≤ start ≤ end ≤ 2000
  • 1 ≤ duration ≤ end - start + 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПартии для сортировки с повторами СложнаяГрузчики и энергетики СложнаяВсе фонари горят как можно дольше СложнаяКрасота клумб на бюджете СложнаяОбщая настройка с разной ценой шага Сложная
загружаем Python…
Вход
jobs=[[1, 4, 2], [3, 6, 2], [6, 8, 1]]
Ожидается
3

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