Решение: Приём граждан в МФЦ
Входной файл содержит информацию о заявках граждан, обращающихся в многофункциональный центр (МФЦ) в течение календарных суток. В заявке указаны время начала и время окончания приёма специалистом в минутах от начала суток. Рабочие места специалистов МФЦ (окна) пронумерованы натуральными числами начиная с 1. Приём одного гражданина ведёт свободный специалист в окне с минимальным номером. Новый посетитель может обратиться к освободившемуся специалисту начиная со следующей минуты после завершения приёма предыдущего. Если в момент обращения в МФЦ свободных специалистов нет, то гражданин уходит. Определите, сколько граждан смогут попасть на приём в МФЦ в течение 24 часов, и каков номер окна специалиста, который начнёт принимать посетителя последним. Если таких окон несколько, укажите наименьший номер окна.
В первой строке входного файла находится натуральное число K, не превышающее 1000, — количество окон в МФЦ. Во второй строке находится натуральное число N (N ≤ 10 000), обозначающее количество граждан. Каждая из следующих N строк содержит два натуральных числа, каждое из которых не превышает 1440: время начала и время окончания приёма в минутах от начала суток.
Для выполнения задания используйте данные из прилагаемого файла.
Решение по шагам
5 шаговСчитаем все заявки из файла и сортируем их по времени начала приёма.
Для каждого окна храним момент, с которого оно свободно. Изначально все окна свободны с начала суток.
Для очередной заявки находим свободные окна, для которых время освобождения меньше времени начала заявки. Из них выбираем окно с минимальным номером.
Если свободное окно найдено, увеличиваем количество принятых граждан на единицу, а время его следующего освобождения устанавливаем равным времени окончания текущего приёма плюс одну минуту.
При каждом назначении сравниваем время начала приёма с максимальным временем начала ранее назначенных заявок. При равенстве выбираем минимальный номер окна.
Точный ответ невозможно определить без прилагаемого входного файла с данными заявок.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Считать окно свободным в минуту окончания предыдущего приёма.
Выбирать любое свободное окно вместо окна с минимальным номером.
Обрабатывать заявки не в порядке времени их начала.
При одинаковом времени последнего начала выбирать не минимальный номер окна.