Разбор
Будем поддерживать наименьшее значение цены на префиксе входного массива. Пусть на -ой итерации
Тогда если на -ой итерации продать акцию, то прибыль составит .
Среди всех таких разностей ищем наибольшую. То есть ответ равен
Пример
Рассмотрим первый пример.
Чтобы получить наибольшую прибыль, следует купить акцию за , а продать за . Таким образом прибыль составит .
Реализация алгоритма
Читаем входные данные.
scanf("%d", &n); prices.resize(n); for (i = 0; i < n; i++) scanf("%d", &prices[i]);
Инициализируем .
min_price = INT_MAX;
Искомую максимальную прибыль подсчитываем в переменной .
res = 0;
Перебираем цены акций.
for (i = 0; i < prices.size(); i++) {
На -ой итерации .
min_price = min(min_price, prices[i]);
Вычисляем ответ
res = max(res, prices[i] - min_price); }
Выводим ответ.
printf("%d\n", res);
Python реализация
import sys
Читаем входные данные.
n = int(input()) prices = list(map(int, input().split()))
Инициализируем .
min_price = sys.maxsize
Искомую максимальную прибыль подсчитываем в переменной .
res = 0
Перебираем цены акций.
for price in prices:
На -ой итерации .
min_price = min(min_price, price)
Вычисляем ответ
res = max(res, price - min_price)
Выводим ответ.
print(res)