-
Notifications
You must be signed in to change notification settings - Fork 0
/
2b-fish-vendor.js
61 lines (43 loc) · 2.73 KB
/
2b-fish-vendor.js
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
51
52
53
54
55
56
57
58
59
60
61
/*
B. Продавец рыбы
Ограничение времени 1 секунда (фактическое использование на тестах – до 71ms)
Ограничение памяти 64Mb (фактическое использование на тестах – до 6.67Mb)
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Вася решил заняться торговлей рыбой. С помощью методов машинного обучения он предсказал цены на рыбу на N дней вперёд. Он решил, что в один день он купит рыбу, а в один из следующих дней — продаст (то есть совершит или ровно одну покупку и продажу или вообще не совершит покупок и продаж, если это не принесёт ему прибыли). К сожалению, рыба — товар скоропортящийся и разница между номером дня продажи и номером дня покупки не должна превышать K.
Определите, какую максимальную прибыль получит Вася.
Формат ввода
В первой строке входных данных задаются числа N и K (1 ≤ N ≤ 10000, 1 ≤ K ≤ 100).
Во второй строке задаются цены на рыбу в каждый из N дней. Цена — целое число, которое может находится в пределах от 1 до 10^9.
Формат вывода
Выведите одно число — максимальную прибыль, которую получит Вася.
Пример 1
Ввод
5 2
1 2 3 4 5
Вывод
2
Пример 2
Ввод
5 2
5 4 3 2 1
Вывод
0
*/
const fs = require('fs');
const input = fs.readFileSync('input.txt', 'utf8').toString().trim().split('\n');
const [, lifePeriod] = input[0].trim().split(' ').map((value) => parseInt(value));
const prices = input[1].trim().split(' ').map((value) => parseInt(value));
const daysCount = prices.length;
let result = 0;
for (let currentDay = 0; currentDay < daysCount; ++currentDay) {
for (let futureDay = currentDay + 1, maxDay = Math.min(daysCount, currentDay + lifePeriod + 1); futureDay < maxDay; ++futureDay) {
if (prices[currentDay] >= prices[futureDay]) {
currentDay = futureDay - 1;
break;
} else if (result < prices[futureDay] - prices[currentDay]) {
result = prices[futureDay] - prices[currentDay];
}
}
}
fs.writeFileSync('output.txt', `${result}`);