Алгоритм решения задания 15. Часть 3
Учимся решать 15 задания третьего типа
Читать
В тематическом парке для строительства арт-объектов используются однородные прямые круговые цилиндры с одинаковыми высотами; таких цилиндров заготовлено N штук. Руководством парка рабочим поставлена задача создать максимальной высоту пирамиду из поставленных друг на друга цилиндров, такую, чтобы каждый следующий цилиндр имел радиус основания не менее чем на 7 единиц меньше, чем предыдущий, чтобы у посетителей парка была возможность на образовавшиеся выступы помещать различные мелкие предметы.
Определите количество цилиндров, которые нужно использовать для создания такой пирамиды, и максимально возможный радиус основания цилиндра, которые будет находиться на вершине такой пирамиды.
Входные данные
В первой строке входного файла находится число N – количество цилиндров (натуральное число, не превышающее 10 000). В следующих N строках находятся значения длин радиусов имеющих цилиндров (все числа натуральные, не превышающие 10 000), каждое – в отдельной строке.
Запишите в ответе два целых числа: сначала количество цилиндров, которое необходимо использовать для строительства пирамиды максимальной высоты, затем максимальную длину радиуса цилиндра, который можно поместить на вершину такой пирамиды.
Типовой пример организации данных во входном файле
5
53
50
42
50
40
Пример входного файла приведён для пяти цилиндров и случая, когда минимальная допустимая разница между длинами двух последовательно идущих цилиндров в пирамиде составляет 3 единицы. При таких исходных данных условию задачи удовлетворяют цилиндры с длинами радиусов оснований 40, 50 и 53 или 42, 50 и 53, соответственно, т.е. количество цилиндров равно 3, а радиус верхнего цилиндра составляет 42.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
with open('2613.txt') as file:
N = int(file.readline())
data = list(map(int, file))
data = sorted(data, reverse=True)
res = [data[0]]
for i in data[1:]:
if res[-1] - i >= 7:
res.append(i)
print(len(res), res[-1])
