Максимальная сумма разностей
Пусть $S$ — последовательность из $N$ целых чисел, пронумерованных подряд начиная с 1. Обозначим $S_i$, $S_j$, $S_k$ три элемента последовательности $S$, где $i < j < k$. Определите в последовательности $S$ три таких числа $S_i$, $S_j$, $S_k$, что $S_i > S_j$, $S_k > S_j$, и значение выражения $(S_i - S_j) + (S_k - S_j)$ максимально. В ответе укажите найденное максимальное значение выражения. Гарантируется, что в последовательности есть три числа, удовлетворяющие условию задачи.
Дано два входных файла — файл А и файл B. Каждый из них в первой строке содержит число $N$ ($5 \leq N \leq 10\,000\,000$) — количество целых чисел. Каждая из следующих $N$ строк содержит одно целое число, значение которого по модулю не превышает 1000. Для файла B необходимо использовать алгоритм, не перебирающий все возможные тройки элементов.
Условие как в банке ФИПИ — открыть и сверить
| ||||||
| | ||||||
Формат: число или слово без единиц измерения; дробную часть отделяйте запятой.
1Мягкая — с чего смотретьуровень 1 из 3
Как можно представить выражение $(S_i-S_j)+(S_k-S_j)$ через сумму двух величин, зависящих от разных частей последовательности?
2Наводящая — какие числа считатьуровень 2 из 3
Для каждого среднего элемента $S_j$ нужно знать максимальный элемент слева и максимальный элемент справа: значение равно $\max_{i<j} S_i + \max_{k>j} S_k - 2S_j$.
3Прямая — фактически решениеуровень 3 из 3
Просматривайте последовательность слева направо, поддерживая максимум слева, а максимумы справа заранее вычислите суффиксным проходом. Для каждого $j$ обновляйте общий максимум.
