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

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

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

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

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

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

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

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

 

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

 

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

В первой строке входного файла находится число 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). Двоичный поиск в отсортированном массиве
Тип ответа:Краткий ответ
Номер: 8091A9
НЕ РЕШЕНО Ответить

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

Ответ: 1040 57

Решение.
В исходном файле 1_26.txt первая строка содержит количество N, а следующие строки — размеры. Сначала считываем N отдельно, чтобы случайно не принять его за ещё один размер. В нашем файле N = 10000.
Ищем набор максимальной длины; среди таких наборов нужно сделать наименьший размер как можно больше. Допустимый зазор в этой задаче равен 9. Число 3 относится только к иллюстративному примеру и в расчёте по основному файлу не используется.
Отсортируем размеры по убыванию. Возьмём самый большой, затем каждый раз будем выбирать наибольший из оставшихся размеров, который хотя бы на 9 меньше последнего выбранного. Остальные размеры пропускаем. Равенство зазора допустимо: проверяем ≥ 9, а не строгое неравенство.
Одинаковые размеры не могут идти рядом в выбранном наборе, поскольку их разность равна нулю. Если очередной размер не помещается, уменьшать уже выбранный больший элемент не требуется: больший размер оставляет не меньше возможностей для дальнейшего выбора.
Докажем правильность обоих критериев. Пусть g₁, g₂, … — размеры, выбранные алгоритмом, а x₁, x₂, …, xₗ — любой допустимый набор в порядке убывания. Первый жадный выбор g₁ не меньше x₁, поскольку взят максимум файла.
Предположим, что gᵢ ≥ xᵢ. Тогда xᵢ₊₁ ≤ xᵢ − 9 ≤ gᵢ − 9, то есть следующий элемент сравниваемого набора подходит и после gᵢ. Алгоритм выбирает наибольший подходящий размер, поэтому gᵢ₊₁ ≥ xᵢ₊₁.
Значит, алгоритм не может закончиться раньше любого допустимого набора и находит максимальное количество элементов. Для наборов этой максимальной длины L верно также gₗ ≥ xₗ. Именно последний элемент является самым маленьким, поэтому его размер у алгоритма максимально возможен.
Программа на Python 3. Скачанный файл сохраняем рядом с программой под именем 1_26.txt:

with open('1_26.txt', encoding='utf-8-sig') as source:
    n, *sizes = map(int, source.read().split())
assert len(sizes) == n
sizes.sort(reverse=True)
chosen = []
for size in sizes:
    if not chosen or chosen[-1] - size >= 9:
        chosen.append(size)
print(len(chosen), chosen[-1])

Результат выполнения на исходном файле: 1040 57.
Контрольные данные выбранного набора:

ПоказательЗначение
Первые пять размеров9998, 9987, 9978, 9968, 9959
Последние пять размеров97, 88, 78, 66, 57
Количество выбранных коробок1040
Минимальная разность соседних выбранных размеров9
Самый маленький выбранный размер57

Проверка: все 1040 выбранных значений присутствуют в файле, каждое использовано не чаще, чем встречается, и все соседние разности не меньше 9. Если разрешить только размеры строго больше 57, максимальное количество уменьшается до 1039. Следовательно, увеличить длину стороны самого маленького элемента, сохранив 1040 элементов, невозможно. Независимый расчёт максимальной длины для каждого возможного наименьшего размера даёт тот же результат.
Сортировка занимает O(N log N), последующий проход — O(N). Память списка и выбранного набора — O(N).
Ответ: 1040 57.

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

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

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

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

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

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

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