|
|
|
# Buy and Sell n-times
|
|
|
|
|
|
|
|
## Goal
|
|
|
|
Given is the price-development of an arbitrary stock.
|
|
|
|
|
|
|
|
![stock-price over time](doc/stock-price.JPG)
|
|
|
|
|
|
|
|
Suppose you have perfect knowledge and are able to buy and sell the stock **multiple times**.
|
|
|
|
Write an algorithm that outputs the maximum profit that can be made by exactly n sales.
|
|
|
|
|
|
|
|
* The price-development is given for an arbitrary number of days.
|
|
|
|
* A stock can only be sold on the next day.
|
|
|
|
* Stock-prices are given as integers
|
|
|
|
* **Each buy must be made on another date after the previous sale**
|
|
|
|
|
|
|
|
### Input
|
|
|
|
A blank-separated array of numbers.
|
|
|
|
The first number is the number of sales allowed.
|
|
|
|
All following numbers are stock-prices.
|
|
|
|
|
|
|
|
Each position symbolises the stock-price of a given day.
|
|
|
|
|
|
|
|
### Output
|
|
|
|
The maximum profit that can be made within that period by `n` sales.
|
|
|
|
|
|
|
|
### Constraints
|
|
|
|
* 2 <= `n` <= 10
|
|
|
|
* 2 * `n` <= `days with stock-prices` <= 50
|
|
|
|
* 1 <= `stock-price` <= 2,147,483,647
|
|
|
|
|
|
|
|
### Example
|
|
|
|
**Input:**
|
|
|
|
`3 12 11 13 9 12 8 14 13 15`
|
|
|
|
where `n` is `3`
|
|
|
|
|
|
|
|
**Output:**
|
|
|
|
`12`
|