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

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

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

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

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

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

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

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

 

Входной файл содержит сведения о заявках на проведение мероприятий в конференц-зале. В каждой заявке указаны время начала и время окончания мероприятия (в минутах от начала суток). Если время начала одного мероприятия меньше времени окончания другого, то провести можно только одно из них. Если время окончания одного мероприятия совпадает со временем начала другого, то провести можно оба. Определите, какое максимальное количество мероприятий можно провести в конференц-зале, и каков при этом максимально возможный перерыв между двумя последними мероприятиями.

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

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

Запишите в ответе два числа: максимальное количество мероприятий и самый длинный перерыв между двумя последними мероприятиями (в минутах).

 

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

5

10 150

100 120

131 170

150 180

120 130

При таких исходных данных можно провести максимум три мероприятия, например, мероприятия по заявкам 2, 3 и 5. Максимальный перерыв между двумя последними мероприятиями составит 20 мин., если состоятся мероприятия по заявкам 2, 4 и 5.

 

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

 

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


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

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

Ответ: 26 11

Решение.

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

В файле 990 заявок. Мероприятия совместимы, когда начало следующего не меньше конца предыдущего: равенство времён разрешено. Сначала определим максимальное количество мероприятий.

Сортируем заявки по времени окончания. Выбираем первую подходящую заявку, затем каждый раз берём самое раннее окончание среди заявок, начинающихся после уже выбранного мероприятия или одновременно с его окончанием. Замена первого мероприятия любого допустимого расписания на подходящее с самым ранним окончанием не мешает остальным. Повторяя это рассуждение, получаем максимальное количество k.

Тот же обмен показывает: после любого фиксированного числа выбранных мероприятий жадное расписание заканчивается не позже любого другого. Сохраним первые k − 1 выбранных заявок и время T их завершения. Последней может стать любая заявка с началом не раньше T.

Для максимального перерыва выбираем среди таких заявок наибольшее время начала S. Ответ по второму критерию равен S − T. Более позднее завершение предпоследнего мероприятия только сократит этот перерыв и сузит список доступных последних заявок.

Таким образом, второй критерий оптимизируется среди расписаний уже максимального размера; он не должен менять первичный выбор количества. Сортировка занимает O(N log N), два прохода — O(N), память O(N).

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

with open("data.txt", encoding="utf-8-sig") as f:
    n = int(f.readline())
    events = [tuple(map(int, f.readline().split())) for _ in range(n)]
events.sort(key=lambda event: (event[1], event[0]))
chosen = []
finish = 0
for start, end in events:
    if start >= finish:
        chosen.append((start, end))
        finish = end
k = len(chosen)
prefix_finish = chosen[-2][1]
best = max(start - prefix_finish for start, end in events if start >= prefix_finish)
print(k, best)

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

Максимальное количество k = 26. Первые k − 1 мероприятий заканчиваются в T = 1249. Последняя выбранная заявка занимает время 1260…1271.

Перерыв 1260 − 1249 = 11.

Одно достигающее ответ расписание задаётся следующими номерами заявок, отсчитываемыми от первой строки после заголовка: 284, 691, 367, 955, 716, 162, 299, 22, 338, 258, 812, 898, 70, 920, 435, 729, 818, 375, 323, 310, 254, 703, 756, 797, 643, 794. Все соседние интервалы в этом порядке совместимы.

Ответ: 26 11.

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

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

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

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

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

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

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