РУҚА
25

Жауабы: Максимальная сумма пары

ЕГЭ · Информатика · Тапсырма 25 · Массивтер және жолдар
ЖоғарыФИПИF6FBF6Толық шешім≈ 15 минут
Ненің шығуы керек

Алгоритм работает за $O(n + m)$ времени и использует $O(m)$ дополнительной памяти; для заданного $m = 114$ память не зависит от $n$. Программа на Python 3 хранит максимальное число для каждого остатка, проверяет условие $a_i > a_j$ и выбирает пару с максимальной суммой, кратной 114.

У этого задания официального ключа нет, поэтому ответ получен в разборе және кілтпен салыстырылмаған. Нәтижені жаттамас бұрын, өтіңіз выкладки — там видно, откуда взялось каждое число.

Условие

На вход программы поступает последовательность из $n$ целых положительных чисел. Рассматриваются все пары элементов последовательности $a_i$ и $a_j$, такие что $i < j$ и $a_i > a_j$. Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на $m = 114$. Если среди найденных пар максимальную сумму имеют несколько, то можно напечатать любую из них.

В первой строке входных данных задаётся количество чисел $n$ ($2 \leq n \leq 12\,000$). В каждой из последующих $n$ строк записано одно целое положительное число, не превышающее $10\,000$.

В качестве результата программа должна напечатать элементы искомой пары. Если таких пар несколько, можно вывести любую из них. Гарантируется, что хотя бы одна такая пара в последовательности есть.

Требуется написать эффективную по времени и памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при одновременном увеличении количества элементов последовательности $n$ и параметра $m$ в $k$ раз время работы программы увеличивается не более чем в $k$ раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 4 килобайта и не увеличивается с ростом $n$.

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

Тапсырманы ашып, өзіңіз шешіңіз

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

Проверяют только делимость суммы, но забывают условие $a_i > a_j$.

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

Хранят минимум вместо максимума для каждого остатка.

Перебирают все пары и получают сложность $O(n^2)$.

Қате вычисляют требуемый остаток: нужно использовать $(m-r) \bmod m$.

Откуда взялся этот ответТалдау бөлінген 7 қадам: видно каждое преобразование и где теряется балл.
Шешімді ашу

Тапсырмаға жауап 25 ЕГЭ, информатика

Официального ключа у этого задания нет, и ответ здесь получен в разборе. Сондықтан жанында есептеулер бар: олардан жауаптың неге негізделгені көрінеді, және тек қана нәтижемен емес, шешім барысын да салыстыруға болады.

Задача из темы «Массивы и строки»: в ней 238 задач — әрқайсысының жауабы мен қадамдық талдауы бар. Тіркелу қажет емес.