РУҚА
25

Решение: Максимальное произведение показаний

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

По каналу связи передаётся последовательность натуральных чисел — показания прибора. В течение $N$ минут прибор ежеминутно регистрирует значение напряжения в электрической сети и передаёт его на сервер. Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее $K$ минут, а произведение этих трёх чисел было максимально возможным. Для выполнения задания используйте данные из прилагаемых файлов A и B.

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

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

5 шагов
1

Пронумеруем показания начиная с нуля. Если последнее выбранное показание имеет индекс $i$, два предыдущих должны находиться среди позиций от $0$ до $i-K$.

2

Будем поддерживать для разрешённого префикса максимум одного числа $M_1$ и максимум произведения двух чисел $M_2$. При добавлении нового показания $a_i$ сначала добавляем в структуры число $a_{i-K}$ и обновляем $M_1$ и $M_2$.

3

Для текущего показания возможное произведение трёх чисел равно $M_2 \cdot a_i$. Максимум таких произведений по всем позициям является ответом для файла.

4

Алгоритм выполняется за $O(N)$ времени и использует $O(1)$ дополнительной памяти, если обрабатывать входной файл последовательно и хранить очередь из последних $K$ показаний.

Числа могут иметь до 21 цифры, поэтому при реализации следует использовать целочисленный тип достаточной разрядности или длинную арифметику.

Ответ

Численные ответы зависят от данных файлов A и B, которые в условии не представлены.

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

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

Проверять все тройки показаний перебором.

Разрешать выбирать показания на расстоянии менее $K$ минут.

Обновлять максимум пары до добавления показания, которое ещё нельзя использовать.

Использовать 32-битный целочисленный тип для произведения.

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

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

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

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