Умение обрабатывать целочисленную информацию с использованием сортировки · 10 заданий
- Задание №26№26
В кондитерской есть N круглых форм для коржей. Специализация кондитерской – многоярусные торты, в которых диаметр каждого верхнего коржа меньше диамет…
Массивы и сортировка
- Задание №26№26
В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки – подарок упаковывается в…
Массивы и сортировка
- Задание №26№26
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарн…
Массивы и сортировка
- Задание №26№26
Общественная организация готовит к отправке посылки для детского дома. Объём кузова грузовика, на котором повезут посылки, известен, и он меньше, чем…
Массивы и сортировка
- Задание №26№26
Илье необходимо перенести файлы с одного компьютера на другой при помощи внешнего жесткого диска. Объём диска может быть меньше, чем требуется для пер…
Массивы и сортировка
- Задание №26№26
Илье необходимо перенести файлы с одного компьютера на другой при помощи внешнего жесткого диска. Объём диска может быть меньше, чем требуется для пер…
Массивы и сортировка
- Задание №26№26
Илье необходимо перенести файлы с одного компьютера на другой при помощи внешнего жесткого диска. Объём диска может быть меньше, чем требуется для пер…
Массивы и сортировка
- Задание №26№26
Входной файл содержит сведения о заявках на проведение мероприятий в конференц-зале. В каждой заявке указаны время начала и время окончания мероприяти…
Массивы и сортировка
- Задание №26№26
В магазине продаётся N товаров нескольких артикулов. Товары одного артикула имеют одинаковую цену. Учёт товаров ведётся поштучно, для каждой единицы т…
Массивы и сортировка
- Задание №26№26
Задание выполняется с использованием прилагаемых файлов. В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаков…
Массивы и сортировка
В кондитерской есть N круглых форм для коржей. Специализация кондитерской – многоярусные торты, в которых диаметр каждого верхнего коржа меньше диаметра предыдущего. Один корж можно поместить на другой, если его диаметр хотя бы на 4 единицы меньше диаметра другого коржа.
Определите наибольшее количество коржей, которое можно использовать для создания многоярусного торта, и максимально возможный диаметр самого маленького коржа.
Входные данные:
В первой строке входного файла находится число N – количество форм для коржей в кондитерской (натуральное число,не превышающее 10 000). В следующих N строках находятся значения диаметров форм для коржей (все числа натуральные,не превышающие 10 000), каждое – в отдельной строке. Диаметр формы равен диаметру коржа, который выпекается в этой в форме.
Запишите в ответе два целых числа: сначала наибольшее количество коржей, которое можно использовать для создания одного многоярусного торта, затем – максимально возможный диаметр самого маленького коржа в таком торте.
Типовой пример организации данных во входном файле:
5
43
40
32
40
30
Пример входного файла приведён для пяти коржей и случая, когда минимальная допустимая разница между диаметрами коржей, подходящих для изготовления многоярусного торта, составляет 3 единицы.
При таких исходных данных условию задачи удовлетворяют наборы коржей с диаметрами 30, 40 и 43 или 32, 40 и 43 соответственно, т.е. количество коржей равно 3, а максимально возможный диаметр самого маленького коржа равен 32.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Правильный ответ
2172 50
Пояснение
Решение:
Сортируем диаметры по убыванию и жадно строим башню, начиная с самого большого коржа: очередной корж кладём, если его диаметр хотя бы на 4 меньше диаметра последнего положенного. Обратите внимание: пример в условии разобран для порога 3, но в самом задании требуется разница не менее 4 единиц.
Почему жадность верна: пропуск самого большого доступного коржа не удлиняет башню (такой корж всегда можно положить в основание), а порог для следующих коржей только уменьшает. Идя сверху вниз, мы на каждом шаге сохраняем максимальный запас, поэтому получаем и наибольшее число коржей, и максимально возможный диаметр самого маленького коржа — это последний взятый корж.
f = open('26.txt')
n = int(f.readline())
a = sorted((int(x) for x in f), reverse=True)
cnt = 0
last = None
for x in a:
if last is None or x <= last - 4:
cnt += 1
last = x
print(cnt, last)
Программа выводит:
2172 50Ответ: 2172 50