Демовариант ЕГЭ по информатике 2020 года, задание 27

Демовариант ЕГЭ по информатике 2020 года, задание 27

Задача 27

На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары элементов последовательности ai и aj, такие что i < j и ai > aj (первый элемент пары больше второго; i и j – порядковые номера чисел в последовательности входных данных). Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на m = 120. Если среди найденных пар максимальную сумму имеют несколько, то можно напечатать любую из них.

Описание входных и выходных данных

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

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

Пример входных данных: 

6 60 140 61 100 300 59

Пример выходных данных для приведённого выше примера входных данных:

140 100

Пояснение. Из шести заданных чисел можно составить три пары, сумма элементов которых делится на m=120: 60+300, 140+100 и 61+59. Во второй и третьей из этих пар первый элемент больше второго, но во второй паре сумма больше.

Требуется написать эффективную по времени и памяти программу для решения описанной задачи.

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

Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и памяти, – 4 балла.

Максимальная оценка за правильную программу, возможно, неэффективную по памяти или время выполнения которой существенно зависит от величины m, – 3 балла. 

Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла.

Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бóльшая из двух оценок.

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

Ниже мы рассмотрим решение последней задачи ЕГЭ по информатике, которая была представленная в демонстационной версии КИМ 2020 года.

Данное задяние из разряда высокого уровня (очень высокого уровня), для решения которой авторы КИМ отводят 55 минут.

Максимальный балл за верно выполненное задание - 4.

Условием задачи предусмотрено, что в качестве ответа можно представить одну или две программы (одна может быть менее эффективной). Каждая программа будет оцениваться независимо друг от друга, а итоговой оценкой станет бóльшая из двух.

Вот именно это условие мы положим в основу решения данного задания.

Сначала мы рассмотрим простое решение, не удовлетворяющее требованиям эффективности, максимальная оценка за которое, при условии верного исполнения, - 2 балла.

Затем мы рассмотрим полное решение, удовлетворяющее условиям эффективности, котрое может быть оценено в 4 балла.

Обратите внимание на то, что именно такой ход решения данного задания рекомендуют авторы.

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

В противном случае, будет более логичным написать программу, не удовлетворяющую условиям эффективности, и получить за задание 2 балла, чем потратить время и не получить никакого результат.

Итак, приступим к выполнению задания.

Эффективная и неэффективная программы будут представленны вместе с объяснением ниже, каждое в отдельной вкладке.

Согласно условию, в первой строке данных задается количество чисел последовательности n. В последовательности целых положительных чисел рассматриваются все пары элементов ai и aj, такие что i < j и ai > aj.

i и j – порядковые номера чисел в последовательности входных данных.

Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на m = 120.

Примем обозначения для искомых чисел: Left – первое число, Right – второе число.

{tab Неэффективное решение}

Наиболее простым, но неэффективным, решением будет использование массива.

Последовательность натуральных чисел записывается в массив. Затем производится перебор элементов массива - состаляются пары элементов, которые проверяются на соответствие условию задачи (максимальная сумма элементов делится на m = 120). В случае, если пара элементов соответсвует условию, то значения этих переменных необходимо будет записать в Left и Right, которые необходимо обнулить в самом начале программы.

Перебор элементов цикла будет осуществляться циклами: основной цикл - выбор одного элемента пары, вложенный цикл - выбор второго элемента пары.

Таким образом, мы имеем следующие переменные и констансты:

- i и j – порядковые номера чисел в последовательности входных данных;
- N - количество элементов в последовательности;
- Left – первое число, Right – второе число;
- a - массив размерностью 120000;
- m - констанста, на которую должна делиться пара элементов, равная 120.

 Составим алгоритм решения задачи:

ege 2020 25 1 1

Прогограмма на языке программирования Паскаль:

  const
      m=120;
  var N, i, j, left, right:integer;
      a:array[1..12000] of integer;
begin
  left:=0;
  right:=0;
  read(N);
  for i:=1 to N do
    readln(a[i]);
  for i:=1 to N-1 do
    for j:=i+1 to N do
      if (a[i]>a[j]) and ((a[i]+a[j]) mod m = 0) and 
((a[i]+a[j])>(left+right)) then begin left:=a[i]; right:=a[j] end; writeln(left, ' ',right) end.

{tab Эффективная программа}

Готовится к публикации

{/tabs}

Демонстрационный вариант 2020 года

Выберите соответствующий номер задания в демонстрационном варианте ЕГЭ 2020 года

Информация

Все изображения, размещенные на сайте, изготовлены автором самостоятельно, а также взяты в сети Интернет из тех изображений, которые находятся в свободном доступе. Поиск изображений осуществлялся посредством "Яндекс. Картинки".

Индекс цитирования

Проект при поддержке компании RU-CENTER Рейтинг@Mail.ru

Версия сайта для слабовидящих