Задача к ЕГЭ по информатике на тему «прочие прототипы» №3

На кондитерской фабрике имеется N коржей для приготовления тортов, которые накладываются в виде пирамиды. Клиент попросил приготовить на заказ торт-пирамиду максимальной высоты из поставленных друг на друга коржей, такую, чтобы в пирамиде использовались коржи, диаметры которых в партии повторяются, при этом сам корж определенного диаметра используется один раз и выбирается наиболее пышный. Пирамида строится так, чтобы разность диаметра каждого следующего коржа с диаметром предыдущего была положительной.

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

Входные данные

В первой строке входного файла 26_2.txt находится число N – количество коржей для приготовления торта (натуральное число, не превышающее 10000). В следующих N строках находятся два числа: значение диаметра коржа (все числа натуральные, не превышающие 10000) и значение высоты коржа, каждое – в отдельной строке.

Запишите в ответе два целых числа: максимальную высоту торта, которую можно составить, затем максимально возможный диаметр самого маленького коржа в таком торте.

Откроем текстовый документ, скопируем его и перенесем в столбец А таблицы Excel. Первую строку таблицы можно удалить, она нам не понадобится.

Переходим в раздел «Данные», «Текст по столбцам» и разделим первый столбец на два по разделителю «пробел».

Выделим столбцы А и В, перейдем в раздел настраиваемая сортировка и отсортируем сначала столбец А по убыванию, затем столбец В по убыванию.

В ячейку C2 запишем формулу:

=ЕСЛИ(И(A2<>A1;A2=A3);B2;””)

Таким образом мы отсортировали список коржей так, чтобы как минимум два коржа имели одинаковый диаметр, а также высота выбранного коржа была максимальна.

Выделяем столбец С и видим, что сумма по нему равна 186886. Это будет первым ответом.

Спускаемся на самую нижнюю строчку нашего списка и ищем последнюю строку, имеющую в столбце С значение 95. Значит, это последний корж, который находится на верхнем ярусе пирамиды. В столбце А находим его диаметр, он равен 3. Это будет вторым ответом.

Решение (Python)

f = open (’26_2.txt’)
n = f.readline()
cakes = [list(map(int, i.split())) for i in f] # Считываем все строки из файла

cakes = sorted(cakes, key = lambda x: (-x[0], -x[1]))
# Сортируем по убыванию диаметра и убыванию высоты коржа
dm = [i[0] for i in cakes] # Все диаметры коржей
cake_pyramid = [] # Торт - пирамида, который мы составляем

for i in cakes:
# Проверяем, что диаметр текущего коржа встречается в файле больше 1 раза
# Чтобы добавить корж в пирамиду, проверяем, что его диаметр меньше предыдущего
    if dm.count(i[0]) > 1 and (not(cake_pyramid) or (i[0] < cake_pyramid[-1][0])):
        cake_pyramid.append(i)

print(sum(i[1] for i in cake_pyramid)) # Высота торта - пирамиды
print(cake_pyramid[-1][0]) # Диаметр самого маленького коржа в пирамиде

Ответ: 186886 3
Оцените статью
Я решу все!