В магазине для упаковки подарков есть N кубических коробок из материалов двух видов. Самой интересной считается упаковка подарка по принципу матрёшки — подарок упаковывается в одну из коробок, та, в свою очередь, в другую коробку и т.д. Все коробки, которые будут использованы для упаковки подарка, нумеруются с единицы, начиная с той коробки, в которой будет находиться подарок. Одну коробку можно поместить в другую, если они изготовлены из разных материалов, а длина её стороны хотя бы на К+2000 единиц меньше длины стороны другой коробки, где К — порядковый номер помещаемой коробки. Известны длины сторон и материал коробок, имеющихся в наличии. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка и минимально возможную длину стороны самой большой из этих коробок. Размер подарка позволяет поместить его в самую маленькую коробку.
Входные данные
В первой строке входного файла находится одно число N (N <= 1000000) — количество коробок. Каждая из следующих N строк содержит два разделённых пробелом натуральных числа, каждое из которых не превышает 1000000; длину стороны и условное обозначение вида материала коробки (0 или 1).
Запишите в ответе два числа: сначала наибольшее количество коробок, подходящих для упаковки подарка «матрёшкой», затем минимально возможную длину стороны самой большой коробки.
Типовой пример организации данных во входном файле
6
43 1
41 0
39 0
38 1
26 0
24 1
Пример входного файла приведён для шести коробок.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
СтатГрад Вариант ИН2510501 14 апреля 2026 – задание №26
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
f = open("26.txt") n = int(f.readline()) a= [] for line in f.readlines(): a.append([int(x) for x in line.split()]) a.sort() box = [a[0]] for i in range(n): k = len(box)+1 if a[i][0] - box[-1][0] >= k + 2000 and box[-1][1] != a[i][1]: box.append(a[i]) print(len(box), box[-1]) |
Ответ: 2785 9995678
