Ctrl K

Отложить платежи, чтобы не уйти в минус

Средняя
Массив flows — движения денег на счёте по порядку: положительное число — поступление, отрицательное — списание. Счёт начинается с нуля, и после каждого движения баланс не должен быть отрицательным. За одну операцию можно взять любое движение и перенести его в самый конец списка. Какое наименьшее число операций нужно, чтобы баланс ни разу не ушёл в минус? Гарантируется, что сумма всех движений неотрицательна, поэтому это всегда возможно.
Пример 1
flows=[5, -2, 4, -1] → 0

Баланс по шагам: 5, 3, 7, 6 — ни разу не ушёл в минус, переносить ничего не нужно.

Пример 2
flows=[2, -6, 1, 5] → 1

После −6 баланс −4. Переносим −6 в конец: [2, 1, 5, −6], баланс 2, 3, 8, 2.

Пример 3
flows=[-3, -1, 2, 4] → 2

Оба расхода стоят раньше доходов, их придётся перенести оба: [2, 4, −3, −1].

Ограничения
  • 1 ≤ len(flows) ≤ 10⁵
  • -10⁹ ≤ flows[i] ≤ 10⁹
  • sum(flows) ≥ 0
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяЗадания с перерывом на остывание СредняяСерии подряд идущих чисел СредняяМетки вразнобой СредняяСращивание верёвок Средняя
загружаем Python…
Вход
flows=[5, -2, 4, -1]
Ожидается
0

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