25

Решение: Максимальная сумма подпоследовательности

ЕГЭ · Информатика · Задание 25 · Массивы и строки
ВысокаяФИПИ377100Короткий ответ≈ 15 минутРазбор в 5 шагов
Условие

Дана последовательность из $N$ натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна $k = 53$. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.

Даны два входных файла (файл А и файл В), каждый из которых содержит в первой строке количество чисел $N$ ($1 \leq N \leq 10\,000\,000$). Каждая из следующих $N$ строк содержит одно натуральное число, не превышающее $10\,000$.

Пример организации исходных данных во входном файле:
$7, 1, 3, 4, 43, 8, 5, 95$.

Для указанных входных данных при $k = 50$ искомая длина последовательности равна 2.

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

Для обработки файла В не следует использовать переборный алгоритм для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Введём префиксные суммы $S_i = a_1 + a_2 + \ldots + a_i$, причём $S_0 = 0$.

2

Сумма подпоследовательности от $l$ до $r$ равна $S_r - S_{l-1}$. Она кратна $53$, если $S_r$ и $S_{l-1}$ имеют одинаковые остатки при делении на $53$.

3

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

4

Если максимальная сумма получается несколькими способами, сравниваем длины соответствующих отрезков и выбираем минимальную.

Для каждого файла достаточно одного прохода по данным и хранения информации для 53 остатков, поэтому сложность обработки равна $O(N)$, а дополнительная память — $O(53)$.

Ответ

Числовые ответы невозможно определить без содержимого файлов А и В.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Перебирать все пары границ подпоследовательности.

Сравнивать только длины подпоследовательностей, не максимизируя сначала сумму.

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

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

Закрепить приёмВ теме «Массивы и строки» ещё 237 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 25 ЕГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Массивы и строки»: в ней 238 задач, и у каждой есть такой же разбор. Регистрация не нужна.