Задание выполняется с использованием прилагаемых файлов.
В аэропорту расположены камеры хранения, состоящие из ячеек. Ячейки камер хранения пронумерованы, начиная с
. Пассажиры сдают багаж в эти ячейки. Багаж кладётся в свободную ячейку с минимальным номером. Известно время размещения багажа в камеру хранения и время освобождения ячейки в камере хранения (в минутах с начала суток). Багаж достаётся из ячейки в течение минуты. Начиная со следующей минуты, в ячейку можно положить другой багаж. Если все ячейки заняты, то багаж сдать нельзя.
Входные данные:
В первой строке подается — число ячеек в камере хранения и
— число пассажиров. На каждой из следующих
строк записаны
числа: время размещения багажа в камере хранения и время освобождения ячейки в камере хранения.
Определите, какое количество багажей сдали в течение суток и номер ячейки, в которую положили последний сданный багаж.
Выходные данные:
В ответ через пробел запишите два числа: количество багажей, которые сдали в ячейки хранения и номер ячейки, в которую положили последний сданный багаж. Пример входных данных:
Для указанных входных данных ответом будет
Решение (Python)
f = open("26-2__2yr4z.txt")
# Считываем количество ячеек в камере хранения (K) и количество пассажиров (N)
k, n = map(int, f.readline().split())
# Создаем список для хранения времени сдачи и выдачи багажа каждого пассажира
# и считываем эти данные из файла, разделяя каждую строку на два числа
a = []
for i in range(n):
start, finish = map(int, f.readline().split())
a.append((start, finish))
# Инициализируем переменные для подсчета количества сданных багажей
# и для хранения номера последней занятой ячей
counter = 0
m = -1
# Создаем список для хранения состояния каждой ячейки (занята/свободна)
storage = [-1] * k
# Сортируем список пассажиров по времени сдачи багажа
a.sort()
# Проходим по каждому пассажиру
for i in range(n):
start = a[i][0]
finish = a[i][1]
# Проходим по каждой ячейке в камере хранения
for j in range(k):
# Если время сдачи багажа текущего пассажира больше времени освобождения ячейки
if start > storage[j]:
# Занимаем текущую ячейку багажом пассажира
storage[j] = finish
# Увеличиваем счетчик сданных багажей
counter += 1
# Обновляем номер последней занятой ячейки
m = j + 1
# Прерываем внутренний цикл, чтобы перейти к следующему пассажиру
break
# Выводим количество сданных багажей и номер последней занятой ячейки
print(counter, m)