26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
У организации есть собственный гостиничный комплекс для сотрудников, и список сотрудников, которые планируют взять
отпуск в следующем календарном году. Здание гостиницы содержит номеров. Все номера одного класса и с
одинаковым количеством мест. Нумерация комнат начинается с
. Сотрудника поселяют в комнату с минимально
возможным номером. Известна дата брони комнаты (номер дня от начала года), и количество дней, на которое
осуществляется бронь. Т.к. после выезда постояльца требуется уборка, другой постоялец может заехать в номер только на
следующий день. Если свободных номеров в гостинице нет, сотрудника поселяют в другой отель. Все сотрудники уходят в
отпуск в разные дни года.
Найдите количество сотрудников, которые заедут в гостиницу, и номер комнаты, которая будет сдана последнему сотруднику.
Входные данные
Первая строка файла содержит число — количество сотрудников, которые планируют взять отпуск (натуральное
число, не превышающее
). Вторая строка содержит одно число
— количество номеров в гостиничном комплексе
(натуральное число, не превышающее
). Каждая из следующих
строк содержит два числа — день заезда (от
начала года), и количество дней проживания.
Выходные данные
Два натуральных числа: количество сотрудников, которые заедут в гостиницу, и номер комнаты, которая будет сдана последнему сотруднику.
Решение (Python)
f = open(’1__1vrj4.txt’) # Считываем количество ячеек номеров (K) и количество клиентов (N) n = int(f.readline()) k = int(f.readline()) # Создаем список для хранения времени приезда и уезда каждого человека # и считываем эти данные из файла, разделяя каждую строку на два числа a = [list(map(int, i.split())) for i in f] # Сортируем список пассажиров по времени сдачи багажа a.sort() # Создаем список для хранения состояния каждого номера (занята/свободна) s = [-1]*k # Инициализируем переменные для подсчета количества сданных номеров # и для хранения номера последней занятого номера count = last = 0 # Проходим по каждому клиента for i in range(n): # Проходим по каждому номеру в гостинице for j in range(len(s)): # Если время приезда текущего клиента больше времени освобождения номера if a[i][0] > s[j]: # Увеличиваем счетчик сданных номеров count += 1 # Занимаем текущий номер s[j] = a[i][0] + a[i][1] # Обновляем номер последней занятого номера last = j + 1 # Прерываем внутренний цикл, чтобы перейти к следующему клиента break # Выводим количество сданных номеров и номер последней занятого номера print(count, last)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!