# Билет 01 — рабочий лист

## Условие

Дан массив цен `prices`, где `prices[i]` — цена акции в i-й день, и целое число `fee` — комиссия за каждую сделку. Можно совершать сколько угодно сделок, но в каждый момент времени может быть куплена не более одной акции, и за каждую полную сделку (покупку и продажу) взимается комиссия `fee`. Верните максимально возможную прибыль.

```
Input:  prices = [1,3,2,8,4,9], fee = 2  →  Output: 8
Объяснение: (8 - 1 - 2) + (9 - 4 - 2) = 8

Input:  prices = [1,3,7,5,10,3], fee = 3  →  Output: 6
Объяснение: (10 - 1 - 3) = 6, одна сделка выгоднее двух
```

Constraints: `1 <= prices.length <= 5 * 10^4`; `0 < prices[i] < 5 * 10^4`; `0 <= fee < 5 * 10^4`.

## Решение — пиши здесь

```ruby
#
# Твоя реализация. Не забудь: проговаривай (пиши в комментариях) —
# 1) идею, 2) сложность по времени, 3) сложность по памяти,
# 4) граничные случаи.
#

def max_profit(prices, fee)
  cash = 0
  hold = -prices[0]

  prices.each do |price|
    cash = max(cash, hold + price - fee)
    hold = max(hold, cash - price)
  end

  cash
end
```

сложность: O(n)
память O(1)
