Задание EGEINF0C1433: Сортировка, отбор и моделирование

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Сортировка, отбор и моделирование.

Учебные темы: Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве.

Впишите правильный ответ.

Рисунок из условия ФИПИ

Задание выполняется с использованием прилагаемых
файлов.

 

В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки – подарок упаковывается в одну из коробок, та в свою очередь в другую коробку и т.д. Одну коробку можно поместить в другую, если длина её стороны хотя бы на 7 единиц меньше длины стороны другой коробки. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка, и максимально возможную длину стороны самой маленькой коробки, где будет находиться подарок. Размер подарка позволяет поместить его в самую маленькую коробку.

Входные данные

В первой строке входного файла находится число N – количество коробок в магазине (натуральное число, не превышающее 10 000). В следующих N строках находятся значения длин сторон коробок (все числа натуральные, не превышающие 10 000), каждое – в отдельной строке.

Запишите в ответе два целых числа: сначала наибольшее количество коробок, которое можно использовать для упаковки одного подарка, затем максимально возможную длину стороны самой маленькой коробки в таком наборе.

Типовой пример организации данных во входном файле

5

43

40

32

40

30

Пример входного файла приведён для пяти коробок и случая, когда минимальная допустимая разница между длинами сторон коробок, подходящих для упаковки «матрёшкой», составляет 3 единицы.

При таких исходных данных условию задачи удовлетворяют наборы коробок с длинами сторон 30, 40 и 43 или 32, 40
и 43 соответственно, т.е. количество коробок равно 3, а длина стороны самой маленькой коробки равна 32.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

 

Скачать файл задания (TXT, ФИПИ)


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.10 Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве
Тип ответа:Краткий ответ
Номер: 0C1433
НЕ РЕШЕНО Ответить

Решение задания EGEINF0C1433

Ответ: 1306 52

Решение.

Сохраним приложенный текстовый файл под именем data.txt. Первая строка задаёт параметры задачи; её нельзя считать обычной записью данных. В программе нумерация элементов списка начинается с нуля, а номера из условия сохраняются без сдвига.

В файле 10000 коробок. Для этого задания минимальная разность сторон равна 7; значение 3 в иллюстративном примере не заменяет ограничение основного условия.

Отсортируем стороны по убыванию. Внешней выберем самую большую коробку. Затем каждый раз берём наибольшую ещё доступную сторону s, для которой previous − s ≥ 7. Равенство разрешено. Равные стороны не позволяют вложить коробки друг в друга.

Обоснуем оба критерия. Пусть в произвольной допустимой цепочке стороны от внешней к внутренней равны a₁, a₂, …, а жадный выбор даёт g₁, g₂, …. Имеем g₁ ≥ a₁. Если gᵢ ≥ aᵢ, то коробка aᵢ₊₁ подходит внутрь gᵢ, следовательно, наибольшая подходящая сторона gᵢ₊₁ не меньше aᵢ₊₁. По индукции жадная цепочка не короче любой другой.

Для цепочек максимальной длины то же сравнение на последнем шаге даёт максимально возможную сторону внутренней коробки. Поэтому отдельная замена последней коробки не нужна. Сортировка занимает O(N log N), просмотр — O(N), память O(N).

Полная программа на Python:

with open("data.txt", encoding="utf-8-sig") as f:
    n = int(f.readline())
    sizes = sorted((int(f.readline()) for _ in range(n)), reverse=True)
chosen = []
for size in sizes:
    if not chosen or chosen[-1] - size >= 7:
        chosen.append(size)
print(len(chosen), chosen[-1])

Проверка результата.

Получена цепочка из 1306 коробок. Первые стороны снаружи: 9998, 9991, 9984, 9976, 9968. Последние стороны: 80, 73, 66, 59, 52. Минимальная соседняя разность всей цепочки равна 7, что не меньше 7. Последняя сторона 52 максимальна среди цепочек такой длины по доказанному сравнению.

Ответ: 1306 52.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF0C1433.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.