Задание 26. Информатика. ЕГЭ. Досрочный экзамен. 08.04.2025
- Просмотры: 557
- Изменено: 8 апреля 2025
В магазине для упаковки подарков есть \(N\) кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки — подарок упаковывается в одну из коробок, та в свою очередь в другую коробку и т.д. Одну коробку можно поместить в другую, если длина её стороны меньше длины стороны другой коробки не менее чем на \(9\) единиц. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка, и максимально возможную длину стороны самой маленькой коробки, где будет находиться подарок. Размер подарка позволяет поместить его в самую маленькую коробку.
Входные данные
В первой строке входного файла находится число \(N\) — количество коробок в магазине (натуральное число, не превышающее \(10~000).\) В следующих \(N\) строках находятся значения длин сторон коробок (все числа натуральные, не превышающие \(10~000),\) каждое — в отдельной строке.
Запишите в ответе два целых числа: сначала наибольшее количество коробок, которое можно использовать для упаковки одного подарка, затем максимально возможную длину стороны самой маленькой коробки в таком наборе.
Типовой пример организации данных во входном файле
\(5\)
\(43\)
\(40\)
\(32\)
\(40\)
\(30\)
Пример входного файла приведён для пяти коробок и случая, когда минимальная допустимая разница между длинами сторон коробок, подходящих для упаковки «матрёшкой», не менее \(3\) единиц. При таких исходных данных условию задачи удовлетворяют наборы коробок с длинами сторон \(30,\) \(40\) и \(43\) или \(32,\) \(40\) и \(43\) соответственно, т.е. количество коробок равно \(3,\) а длина стороны самой маленькой коробки равна \(32.\)
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Решение:
Python
base = ''
fd = open(base + '26.txt')
N = int(fd.readline())
boxes = set()
for line in fd:
boxes.add(int(line))
edges = sorted(list(boxes), reverse=True)
q = 1
cur_len = edges[0]
for p in range(1, len(edges)):
if cur_len - edges[p] > 8:
q += 1
cur_len = edges[p]
print(q, cur_len)
Ответ: \(1040 \,\, 57\)