EduBrick

Купить и продать

2000 мс · 256 МБ · всё или ничего

Дана последовательность цен по дням. Купить можно в один день, продать — в любой более поздний.

Выведите наибольшую возможную разность «продал минус купил». Если любая сделка убыточна, ответ отрицательный: продать всё равно придётся.

Формат ввода

В первой строке nn от 22 до 21052 \cdot 10^5. Во второй — nn чисел, каждое по модулю не больше 10910^9.

Формат вывода

Одно число.

Примеры

ввод
6
7 1 5 3 6 4
вывод
5

Примечание

Наивно — перебрать все пары «день покупки, день продажи»: 210102 \cdot 10^{10} шагов. Достаточно одного прохода: идя слева направо, помните наименьшую цену из уже виденных. Разность здесь доходит до 21092 \cdot 10^9 — это меньше предела int (21474836472\,147\,483\,647), но запаса всего семь процентов, и надёжнее сразу взять long long.

Войдите, чтобы отправлять решения.