Ответ: Максимальная пара с остатками
Алгоритм выполняется за $O(N)$ времени и использует $O(1)$ дополнительной памяти. Программа последовательно обрабатывает числа, поддерживая два максимума с различными остатками среди всех чисел и среди чисел, кратных $7$.
У этого задания официального ключа нет, поэтому ответ получен в разборе и с ключом не сверен. Перед тем как заучивать результат, пройдите выкладки — там видно, откуда взялось каждое число.
Дана последовательность $N$ целых положительных чисел. Рассматриваются все пары элементов последовательности, удовлетворяющие следующим условиям: числа в паре имеют различные остатки от деления на $d = 160$, и по крайней мере одно из чисел пары делится на $p = 7$. Порядок элементов в паре неважен. Среди всех таких пар нужно найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести любую из них. Если подходящих пар в последовательности нет, нужно вывести два нуля.
В первой строке входных данных задаётся количество чисел $N$ ($2 \le N \le 10\,000$). В каждой из последующих $N$ строк записано одно натуральное число, не превышающее $10\,000$.
Напишите эффективную по времени и памяти программу для решения этой задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел $N$ в $k$ раз время работы программы увеличивается не более чем в $k$ раз, а при увеличении параметра $d$ в $k$ раз время работы программы не увеличивается. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом $N$ и $d$.
Перед текстом программы кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.
Где здесь ошибаются
Хранение всех чисел последовательности, что нарушает требование по памяти.
Хранение массива размера $d$, из-за чего память зависит от параметра $d$.
Проверка только того, что одно число делится на $7$, без проверки различных остатков по модулю $160$.
Добавление текущего числа в структуру до проверки пары с ним: в этом случае число может быть ошибочно спарено само с собой.
Хранение только одного максимального значения без второго кандидата с другим остатком.