Несложная задачка по программированию (можно на любом языке): Вася решил заняться торговлей рыбой. С помощью методов машинного обучения он предсказал цены на рыбу на N дней вперёд. Он решил, что в один день он купит рыбу, а в один из следующих дней — продаст (то есть совершит или ровно одну покупку и продажу или вообще не совершит покупок и продаж, если это не принесёт ему прибыли). К сожалению, рыба — товар скоропортящийся и разница между номером дня продажи и номером дня покупки не должна превышать K. Определите, какую максимальную прибыль получит Вася. Формат ввода В первой строке входных данных задаются числа N и K (1 ≤ N ≤ 10000, 1 ≤ K ≤ 100). Во второй строке задаются цены на рыбу в каждый из N дней. Цена — целое число, которое может находится в пределах от 1 до 109. Формат вывода Выведите одно число — максимальную прибыль, которую получит Вася. ПРИМЕР: Вввод: 5 2 1 2 3 4 5 Вывод: 2
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int K = scanner.nextInt(); int[] prices = new int[N];
for (int i = 0; i < N; i++) { prices[i] = scanner.nextInt(); } int maxProfit = 0; for (int i = 0; i < N; i++) { for (int j = i + 1; j < Math.min(N, i + K + 1); j++) { int profit = prices[j] - prices[i]; if (profit > maxProfit) { maxProfit = profit; } } } System.out.println(maxProfit); }
// Решение на языке программирования Java
import java.util.Scanner;
public class Main {
for (int i = 0; i < N; i++) {public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int K = scanner.nextInt();
int[] prices = new int[N];
prices[i] = scanner.nextInt();
}
int maxProfit = 0;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < Math.min(N, i + K + 1); j++) {
int profit = prices[j] - prices[i];
if (profit > maxProfit) {
maxProfit = profit;
}
}
}
System.out.println(maxProfit);
}
}