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

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

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

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

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

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

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

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

 

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

 

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

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

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

Ответ: 2172 50

Решение.
В исходном файле 1_26.txt первая строка содержит количество N, а следующие строки — размеры. Сначала считываем N отдельно, чтобы случайно не принять его за ещё один размер. В нашем файле N = 10000.
Ищем набор максимальной длины; среди таких наборов нужно сделать наименьший размер как можно больше. Допустимый зазор в этой задаче равен 4. Число 3 относится только к иллюстративному примеру и в расчёте по основному файлу не используется.
Отсортируем размеры по убыванию. Возьмём самый большой, затем каждый раз будем выбирать наибольший из оставшихся размеров, который хотя бы на 4 меньше последнего выбранного. Остальные размеры пропускаем. Равенство зазора допустимо: проверяем ≥ 4, а не строгое неравенство.
Одинаковые размеры не могут идти рядом в выбранном наборе, поскольку их разность равна нулю. Если очередной размер не помещается, уменьшать уже выбранный больший элемент не требуется: больший размер оставляет не меньше возможностей для дальнейшего выбора.
Докажем правильность обоих критериев. Пусть g₁, g₂, … — размеры, выбранные алгоритмом, а x₁, x₂, …, xₗ — любой допустимый набор в порядке убывания. Первый жадный выбор g₁ не меньше x₁, поскольку взят максимум файла.
Предположим, что gᵢ ≥ xᵢ. Тогда xᵢ₊₁ ≤ xᵢ − 4 ≤ gᵢ − 4, то есть следующий элемент сравниваемого набора подходит и после 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 >= 4:
        chosen.append(size)
print(len(chosen), chosen[-1])

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

ПоказательЗначение
Первые пять размеров9998, 9993, 9987, 9983, 9978
Последние пять размеров66, 62, 58, 54, 50
Количество выбранных коржей2172
Минимальная разность соседних выбранных размеров4
Самый маленький выбранный размер50

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

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

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

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

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

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

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

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