27

Максимальная разность сумм

ЕГЭ · Информатика · Задание 27 · Динамическое программирование
ВысокаяФИПИBDD715Короткий ответ≈ 15 минут

Пусть $S$ — последовательность из $N$ целых чисел, пронумерованных подряд начиная с 1. Обозначим $S(L, R)$ подпоследовательность, состоящую из идущих подряд элементов, входящих в $S$, начиная с элемента с номером $L$ и заканчивая элементом с номером $R$. Требуется найти такие значения номеров элементов $L$, $M$, $R$, где $0 < L < M < R - 1$, чтобы разность суммы элементов подпоследовательности $S(L, M)$ и суммы элементов подпоследовательности $S(M + 1, R)$ была максимальна. Даны два входных файла — файл A и файл B. В первой строке каждого файла содержится число $N$ ($5 \leq N \leq 10\,000\,000$), далее записаны $N$ целых чисел, каждое по модулю не превышает 1000. Для файла B нельзя использовать переборный алгоритм, вычисляющий разность для всех возможных вариантов.

Условие как в банке ФИПИ — открыть и сверить
Впишите правильный ответ.

Задание выполняется с использованием прилагаемых
файлов.

Пусть S – последовательность из N целых чисел, пронумерованных подряд начиная с 1. Обозначим S(L, R) подпоследовательность, состоящую из идущих подряд элементов, входящих в S, начиная с элемента с номером L и заканчивая элементом с номером R.

Требуется найти такие значения номеров элементов L, M, R, где
0 < L < M < R – 1 (т.е. между элементами с номерами M и R есть ещё как минимум один элемент), чтобы разность суммы элементов подпоследовательности S(L, M) и суммы элементов подпоследовательности S(M + 1, R) была максимальна.

В ответе укажите максимальное значение разности подобных сумм.

Входные данные

Дано два входных файла (файл A и файл B), каждый из которых
в первой строке содержит число N (5 ≤ N ≤ 10 000 000) – количество целых чисел. Каждая из следующих N строк содержит одно целое число, значение которого по модулю не превышает 1000.

В ответе укажите два числа: сначала значение искомой величины для файла А, затем – для файла B.

Типовой пример организации данных во входном файле

7

–20

3

–1

8

4

–2

10

При таких входных данных L = 2, M = 4, R = 6. Искомая максимальная разность равна (3 + (–1) + 8) – (4 + (–2)) = 8. Подпоследовательность «8 4 –2» разбить на две подпоследовательности требуемого вида невозможно.

Ответом является число 8.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий разность для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.



Ваш ответ

Формат: число или слово без единиц измерения; дробную часть отделяйте запятой.

!
3 уровня: от лёгкого толчка до почти готового решения. Следующий открывается, когда прочитан предыдущий, — чтобы не перепрыгнуть сразу к ответу.
1Мягкая — с чего смотретьуровень 1 из 3

Выразите суммы двух частей через префиксные суммы и разделите перебор по позиции $M$.

2Наводящая — какие числа считатьуровень 2 из 3

Для фиксированного $M$ нужно максимизировать сумму $S(L, M)$ по $L < M$ и минимизировать сумму $S(M + 1, R)$ по $R \geq M + 2$.

3Прямая — фактически решениеуровень 3 из 3

Одним проходом слева направо поддерживайте максимум суммы от допустимого начала до текущей позиции, а справа налево заранее вычислите минимальные суммы от позиции до конца. Для каждого $M$ объедините левый максимум и правый минимум.

Всё равно не складывается?Полное решение с обоснованием каждого шага — на отдельной странице.
Открыть решение

Задание 27 ЕГЭ, информатика

Задача из темы «Динамическое программирование»: в ней 72 задачи с ответом и разбором по шагам. В 27-м номере бланка — 49 задач.

Ответ можно проверить здесь же, а если не выходит — открыть подсказку или разбор. Регистрация не нужна.