26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
В городе открылось кафе. В нем есть столиков. После каждого клиента столик необходимо убрать, на это уходит
10 минут. Из-за большой загруженности, уборка начинается через 5 минут после того, как уходит гость. Новый клиент
может сесть через 5 минут после завершения уборки. Кафе работает с 7:00 и закрывается в 20:00. Все клиенты должны
уйти не позже 20:00. За это время в него приходит
клиентов. (Гарантируется, что они придут не раньше 7:00, а
планируют уйти не позже 20:00).
Каждого гостя при входе встречает администратор и подбирает для него стол с минимальным номером. Может
случиться так, что несколько людей придет одновременно, тогда администратор в первую очередь подбирает столик
для того, кто планирует сидеть меньшее время. В случае если все столы заняты, гость готов подождать не более 3
минут, при этом за столом он пробудет обязательно секунд (
– разница между временем прибытия и отбытия), в
этом случае выбирается столик, который освободится раньше всего. Если таких несколько, выбирается с меньшим
номером.
Определите, сколько пар клиентов смогут посетить кафе в течении дня при условии, что общее время проведенное за столиками этих клентов кратно 17.
Входные данные. На первой строке одно число – количество гостей, пришедших за день. На второй строке
одно число
– количество столиков в кафе. Далее
строк, в каждой из которых указано время, когда
клиент пришел и время, до которого он планировал пробыть в кафе (время дано в минутах от начала
дня).
f = open(’26.txt’) n = int(f.readline()) # считываем количество пришедших клиентов k = int(f.readline()) # считываем количество мест в кафе clients = [] # список клиентов for line in f.readlines(): a, b = map(int, line.split()) clients.append([a, b]) clients.sort() # сортируем список клиентов table = [-1] * k # список, симулирующий каждое столик, в котором будет записано время, в которое освободится каждое место c17 = [0]*17 #подсчет количества пассажиров с различными остатками от деления на 17 for client in clients: # проход по каждому клиенту ok = False # флаг, которые показывает нужно ли человеку ждать или нет for i in range(k): # если время прихода текущего клиента больше чем время освобождения данного места другим клиентом if client[0] >= table[i]: table[i] = client[1] + 20 # записываем время ухода текущего клиента с учётом уборки данного места после него ok = True # помечаем, что для текущего клиента нашли место tim = client[1]-client[0] #время проведенное за столиком c17[tim % 17] += 1 #подсчитываем это время за столиком break # прерываем цикл - переходим к следующему клиенту if not ok: # если клиенту нужно подождать mt = min(table) # определяем место, которое освободится в ближайшее время if client[0] + 3 >= mt: # если время ожидания не более 3 минут ind = table.index(mt) # определяем индекс данного места в списке tim = client[1] - client[0] # считаем время T if table[ind] + tim <= 1200: # если данный клиент уйдёт не позже закрытия table[ind] += tim + 20 # то сажаем данного человека за место c17[tim % 17] += 1 #подсчитываем это время за столиком # считаем количество пар, в которых время за столиками кратно 17 pair = c17[0]*(c17[0]-1) // 2 for i in range(1, 9): #считаем пары с различными остатками от деления на 17, сумма которых равна 17 pair += c17[i]*c17[17-i] print(pair)
Специальные программы

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

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

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

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

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

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