ЕГЭ, ОГЭ, программирование и робототехника в Калининграде

№ 26013. Типовые варианты

В тематическом парке для строительства арт-объектов используются однородные прямые круговые цилиндры с одинаковыми высотами; таких цилиндров заготовлено 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])
Разберём это задание на бесплатном пробном занятии

Преподаватель покажет, как решать такие задачи, и подскажет, с чего начать подготовку. Группы до 8 человек, очно в Калининграде и онлайн.

Записаться на пробное занятие