🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
ProgerLib Питон для всех
n строк. Каждая строка содержит два числа, разделенных пробелом: день_прибытия и день_отъезда (целые числа). Эти строки представляют заявки от клиентов и могут быть в произвольном порядке.
В конце будет строка "конец".
Одна строка, содержащая n чисел, разделенных пробелом. i-е число в строке — это номер комнаты, выделенный i-му клиенту из первоначального списка.
1 5
8 10
2 4
6 9
1 3
конец
1 2 2 1 3
# Создаем пустой список для хранения заявок от клиентов
requests = []
# Используем цикл while для считывания всех заявок до слова "конец"
while True:
# Считываем очередную строку ввода
line = input()
# Если введена строка "конец", выходим из цикла
if line == "конец":
break
# Разделяем строку по пробелу и преобразуем части в целые числа
arrival_day, departure_day = map(int, line.split())
# Добавляем кортеж с днями прибытия и отъезда в список заявок
requests.append((arrival_day, departure_day))
# Список для хранения дат отъезда для каждой занятой комнаты.
# Индекс списка - это (номер_комнаты - 1).
# Значение - день, когда комната освободится.
room_departure_dates = []
# Список для хранения результатов - номеров комнат для каждого клиента
assigned_rooms = []
# Инициализируем счетчик для цикла while, чтобы пройти по всем заявкам
request_index = 0
# Основной цикл, который обрабатывает каждую заявку последовательно
while request_index < len(requests):
# Получаем данные текущего клиента
current_arrival, current_departure = requests[request_index]
# Флаг, который покажет, нашли ли мы комнату для клиента
has_found_room = False
# Инициализируем счетчик для поиска свободной комнаты
room_index = 0
# Вложенный цикл while для поиска подходящей комнаты среди уже существующих
while room_index < len(room_departure_dates):
# Комната считается свободной, если новый гость прибывает
# в тот же день или позже, чем уезжает предыдущий гость.
if current_arrival >= room_departure_dates[room_index]:
# Мы нашли подходящую комнату! Обновляем для нее дату отъезда.
room_departure_dates[room_index] = current_departure
# Добавляем номер комнаты (индекс + 1) в список результатов
assigned_rooms.append(room_index + 1)
# Устанавливаем флаг, что комната найдена
has_found_room = True
# Прерываем поиск, так как мы должны выбрать комнату с наименьшим номером
break
# Переходим к проверке следующей комнаты
room_index += 1
# Если после проверки всех комнат свободная так и не нашлась
if not has_found_room:
# "Открываем" новую комнату, добавляя дату отъезда нового гостя в конец списка
room_departure_dates.append(current_departure)
# Номер новой комнаты будет равен текущему количеству комнат
new_room_number = len(room_departure_dates)
# Добавляем номер новой комнаты в список результатов
assigned_rooms.append(new_room_number)
# Переходим к обработке следующей заявки
request_index += 1
# Выводим все назначенные номера комнат в одну строку через пробел
print(*assigned_rooms)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...