В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки –
подарок упаковывается в одну из коробок, та в свою очередь в другую коробку и т.д. Одну коробку можно поместить в другую, если длина её стороны меньше длины стороны другой коробки не менее чем на 9 единиц. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка, и максимально возможную длину стороны самой маленькой коробки, где будет находиться подарок. Размер подарка позволяет поместить его в самую маленькую коробку.
Входные данные
В первой строке входного файла находится число N – количество коробок в магазине (натуральное число, не превышающее 10 000).
В следующих N строках находятся значения длин сторон коробок (все числа натуральные, не превышающие 10 000), каждое – в отдельной строке.
Запишите в ответе два целых числа: сначала наибольшее количество коробок, которое можно использовать для упаковки одного подарка, затем максимально возможную длину стороны самой маленькой коробки в таком наборе.
Типовой пример организации данных во входном файле
5
43
40
32
40
30
Пример входного файла приведён для пяти коробок и случая, когда минимальная допустимая разница между длинами сторон коробок,
подходящих для упаковки «матрёшкой», не менее 3 единиц. При таких исходных данных условию задачи удовлетворяют наборы
коробок с длинами сторон 30, 40 и 43 или 32, 40 и 43 соответственно, т.е. количество коробок равно 3, а длина стороны самой маленькой коробки равна 32.
Решение:
Решение на Python:
with open('E:/10/26_21424.txt') as f:
N = int(f.readline())
boxes = [int(f.readline()) for _ in range(N)]
boxes.sort()
max_count = 0
best_min_box = 0
for i in range(N):
count = 1
last = boxes[i]
for j in range(i + 1, N):
if boxes[j] >= last + 9:
count += 1
last = boxes[j]
if count > max_count:
max_count = count
best_min_box = boxes[i]
elif count == max_count:
best_min_box = max(best_min_box, boxes[i])
print(max_count, best_min_box)
Ответ: 1040 57