Войти Регистрация
Алгоритмы

193. Сделки по истории цен с комиссией брокера

Средняя

В тестовом стенде Т‑Банка Инвестиций лежит история цен одной бумаги по дням: prices[i] в рублях. На руках одновременно может быть не больше одной бумаги.

Каждый день можно купить (если бумаги нет), продать (если есть) или ничего не делать. С каждой продажи брокер берёт fee рублей. Верните наибольшую прибыль задним числом; не торговать — прибыль 0.

В работе: Стенд проверяет торговые стратегии на 250 днях истории: верхняя граница «знай мы цены заранее» показывает, сколько съедает комиссия 15 ₽ за сделку.

Пример 1

Ввод
prices = [100, 103, 98, 110, 105, 112]
fee = 4
Вывод
11

Купить по 98, продать по 112: 112 − 98 − 4 = 10. Две сделки 98→110 и 105→112 дают 8 + 3 = 11.

Пример 2

Ввод
prices = [100, 103]
fee = 5
Вывод
0

Рост на 3 ₽ не окупает комиссию 5 ₽.

Ограничения

  • 1 ≤ n ≤ 10⁵
  • 1 ≤ prices[i] ≤ 10⁶
  • 0 ≤ fee ≤ 10⁶
  • Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def best_with_fee(prices, fee):
Динамическое программированиеСостоянияОдин проходцельO(n)

Источник: наша задача на данных Т-Банка. Условие пересказано своими словами.