Ctrl K

Баланс на любой порядок

Сложная
Перед вами список операций operations, где operations[i] = [cost, refund]. Каждую операцию нужно выполнить ровно один раз, но в каком порядке — заранее неизвестно. Чтобы запустить операцию, на счёте должно быть не меньше cost. После неё баланс меняется на - cost + refund: сначала списывается стоимость, потом возвращается refund. Верните наименьший начальный баланс, при котором все операции гарантированно удастся выполнить, **в каком бы порядке** они ни шли.
Пример 1
operations=[[6, 2], [3, 5], [4, 0]] → 11

Убыточные операции [6, 2] и [4, 0] вместе съедают 4 + 4 = 8. Если выполнить их первыми, а [3, 5] поставить последней, перед ней понадобится 8 + 3 = 11. Хуже порядка нет, поэтому ответ 11.

Пример 2
operations=[[0, 7], [5, 5]] → 5

Ни одна операция не уменьшает баланс, поэтому достаточно суммы на самую дорогую из них — 5.

Пример 3
operations=[[2, 0], [2, 0], [2, 0]] → 6
Ограничения
  • 1 ≤ len(operations) ≤ 10⁵
  • operations[i] = [cost, refund]
  • 0 ≤ cost, refund ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаращиваем капитал проектами СложнаяРазличимые сокращения слов СложнаяБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков СложнаяПо две отметки на отрезок Сложная
загружаем Python…
Вход
operations=[[6, 2], [3, 5], [4, 0]]
Ожидается
11

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