-
Notifications
You must be signed in to change notification settings - Fork 50
/
Copy pathexchange.go
50 lines (40 loc) · 1.08 KB
/
exchange.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
const maxCapacity = 32 * 10000
buffer := make([]byte, maxCapacity)
scanner.Buffer(buffer, maxCapacity)
var line string
// читаем количество дней
var n int
scanner.Scan()
line = scanner.Text()
n, _ = strconv.Atoi(line)
// читаем цены акций (массив)
prices := make([]int, n)
scanner.Scan()
row := scanner.Text()
values := strings.Split(row, " ")
var value int
for i := 0; i < n; i++ {
value, _ = strconv.Atoi(values[i])
prices[i] = value
}
// находим решение. Стратегия - пока цена следующего дня больше, чем предыдущего,
// мы будем продавать. Фактически, мы складываем все монотонно увеличивающиеся
// сегменты на графике акций
profit := 0
for i := 1; i < n; i++ {
if prices[i-1] < prices[i] {
profit += prices[i] - prices[i-1]
}
}
fmt.Print(profit)
}