Задание 27 ЕГЭ по информатике · 8F1330

Программа и описание алгоритмаВысокаяКЭС 3.2КЭС 3.3
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, разность которых чётна, и в этих парах хотя бы одно из чисел делится на 19. Порядок элементов в паре неважен. Среди всех таких пар требуется найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести любую из них. Если подходящих пар нет, необходимо вывести два нуля.
В первой строке входных данных задаётся количество чисел N (2≤N≤10 000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000.
Напишите эффективную по времени и памяти программу для решения задачи. Эффективная по времени программа должна работать за время, не превышающее линейное относительно N. Память, необходимая для хранения всех переменных программы, не должна превышать 1 Кбайт и не должна увеличиваться с ростом N.
Перед текстом программы кратко опишите алгоритм решения и укажите использованный язык программирования и его версию.

Развёрнутый ответ: проверяется по критериям ФИПИ.

Подсказки (3)
  1. Какие числа могут образовать пару с чётной разностью? Какую информацию о уже обработанных числах достаточно хранить?
  2. Чётная разность получается у чисел одинаковой чётности. Для каждой чётности храните максимальное встретившееся число и максимальное число, кратное 19.
  3. Для очередного числа x проверьте пару с максимальным ранее встреченным числом той же чётности, если x кратно 19, и пару с максимальным ранее встреченным числом той же чётности, кратным 19, в любом случае.
Решение
1. Разность двух чисел чётна тогда и только тогда, когда числа имеют одинаковую чётность. Поэтому достаточно рассматривать отдельно пары чётных и пары нечётных чисел.

2. При обработке очередного числа x возможная подходящая пара должна содержать либо само число x, если оно делится на 19, либо ранее встреченное число той же чётности, делящееся на 19.

3. Чтобы получить максимальную сумму с текущим числом, достаточно хранить для каждой чётности максимальное число вообще и максимальное число, кратное 19. Все эти значения можно обновлять после проверки пар с текущим числом.

4. Если x кратно 19, его можно объединить с максимальным ранее встреченным числом той же чётности. Если среди ранее обработанных чисел той же чётности есть число, кратное 19, его можно объединить с x независимо от делимости x на 19.

5. Каждое число обрабатывается один раз, выполняется постоянное число сравнений и обновлений. Время работы программы составляет O(N), а используется только постоянное количество переменных, то есть память составляет O(1).

6. Программа на Python 3:

7. ```python best = [-1, -1] best19 = [-1, -1] ans_sum = -1 ans_pair = (0, 0) n = int(input()) for _ in range(n):
x = int(input()) parity = x % 2 if x % 19 == 0 and best[parity] != -1:
if x + best[parity] > ans_sum:
ans_sum = x + best[parity] ans_pair = (best[parity], x) if best19[parity] != -1:
if x + best19[parity] > ans_sum:
ans_sum = x + best19[parity] ans_pair = (best19[parity], x) if x > best[parity]:
best[parity] = x if x % 19 == 0 and x > best19[parity]:
best19[parity] = x if ans_sum == -1:
print(0, 0) else:
print(ans_pair[0], ans_pair[1])
```
Частые ошибки
  • Проверять только пары, в которых первое число кратно 19, и пропускать случай, когда кратно 19 второе число.
  • Считать подходящими числа разной чётности.
  • Обновлять максимальные значения до проверки пары с текущим числом и тем самым использовать один и тот же элемент дважды.
  • Хранить всю последовательность, нарушая требование по памяти.
  • Выводить нули, если подходящей пары нет, но не обрабатывать случай отсутствия значения, кратного 19, для нужной чётности.

Источник: Открытый банк ФИПИ

Похожие задания

27Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 5…Программа и описание алгоритма · 6A655827На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой…Программа и описание алгоритма · 6FF64727Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 7BD73827Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять рядом…Программа и описание алгоритма · 8180D727Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять в…Программа и описание алгоритма · 902B8427Рассматриваются все пары различных элементов последовательности: порядок элементов в паре не важен.…Программа и описание алгоритма · BCE6F127На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие…Программа и описание алгоритма · C0417927Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять рядом…Программа и описание алгоритма · E3E824

Нужен репетитор по информатике?

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

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.