РУҚА
25

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

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

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

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

Пример организации исходных данных во входном файле:
$7, 1, 3, 4, 93, 8, 5, 95$.
Для указанных входных данных при $k = 50$ искомая длина последовательности равна $2$.

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

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

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

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

5 шагов
1

Введём префиксные суммы $S_0 = 0$ и $S_i = a_1 + a_2 + \dots + a_i$. Сумма подпоследовательности от позиции $l$ до позиции $r$ равна $S_r - S_{l-1}$.

2

Сумма будет кратна $97$, если $S_r \bmod 97 = S_{l-1} \bmod 97$. Поэтому для каждого остатка нужно рассматривать префиксные суммы с одинаковым остатком.

3

Так как все числа натуральные, для каждого остатка достаточно хранить минимальную встреченную префиксную сумму и её позицию. Она даёт максимальную разность $S_r - S_{l-1}$ для текущей правой границы.

4

При равенстве максимальных сумм сравниваем длины подпоследовательностей и сохраняем меньшую. Алгоритм обрабатывает каждый элемент один раз и использует $97$ групп остатков.

Точные два числовых результата можно получить только после обработки содержимого файлов A и B, которые в условии не предоставлены.

Ответ

Числовые значения для файлов A и B невозможно определить без самих входных файлов.

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

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

Перебирать все пары границ подпоследовательности, получая квадратичную сложность.

Хранить для остатка максимальную, а не минимальную префиксную сумму.

Забывать префиксную сумму $S_0 = 0$.

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

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

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

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

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