Контест Senior Динамическое программирование обновлено
Торговля акцией с комиссией и днём перерыва
Условие
Известна цена акции на n дней вперёд. Можно совершать сколько угодно сделок «купить одну акцию, потом продать», но:
- в каждый момент на руках не больше одной акции;
- за каждую продажу платится комиссия
f; - после продажи следующий день пропускается (купить можно не раньше чем через день после продажи).
Покупка и продажа в один день бессмысленны. Найдите максимальную прибыль (если торговать невыгодно, 0).
Ввод: в первой строке n и f (1 ≤ n ≤ 2500, 0 ≤ f ≤ 10⁹), во второй n цен (1 ≤ pᵢ ≤ 10⁹).
Вывод: максимальная прибыль (может не поместиться в 32 бита).
Пример 1
Ввод:
5 0
1 2 3 0 2
Вывод:
3
Пример 2
Ввод:
6 2
1 3 2 8 4 9
Вывод:
6
Как подойти
Подсказки: 2
- Опишите, в каком «состоянии» вы можете быть в конце дня.
- Три состояния: держу акцию, только что продал, свободен.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.