Входной файл содержит информацию о заявках граждан, обращающихся во многофункциональный центр (МФЦ) в течение календарных суток. В заявке указаны время начала и время окончания приёма специалистом (в минутах от начала суток). Рабочие места специалистов МФЦ (окна) пронумерованы натуральными числами начиная с 1. Приём одного гражданина ведёт свободный специалист в окне с минимальным номером. Новый посетитель может обратиться к освободившемуся специалисту, начиная со следующей минуты после завершения приёма предыдущего. Если в момент обращения в МФЦ свободных специалистов нет, то гражданин уходит. Определите, сколько граждан сможет попасть на приём в МФЦ в течение 24 часов, и каков номер окна специалиста, который начнёт принимать посетителя последним. Если таких окон несколько, укажите наименьший номер окна.
Входные данные
Входные данные представлены в файле следующим образом. Первая строка входного файла содержит натуральное число K, не превышающее 1000, — количество окон в МФЦ. Во второй строке записано натуральное число N обозначающее количество граждан.
Каждая из следующих N строк содержит два натуральных числа, каждое из которых не превышает 1440: указанные в заявке время начала и время окончания приёма (в минутах от начала суток).
Запишите в ответе два числа: количество граждан, которые смогут воспользоваться услугами МФЦ, и номер окна, в котором специалист примет последнего гражданина.
Ответ:
Приведём решение на языке Python.
with open('26-1.txt') as f:
w_count, _ = int(f.readline()), f.readline()
events = sorted(tuple(map(int, ln.split())) for ln in f)
slots, total, last = [-1] * w_count, 0, 0
for tick_in, tick_out in events:
for num, free_at in enumerate(slots, 1):
if tick_in > free_at:
slots[num - 1], total, last = tick_out, total + 1, num
break
print(total, last)

