26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
В городе N расположено тайм-кафе (кафе, в котором люди платят не за продукты и заказы, а за то, сколько времени они провели в нём). 1 минута – 7 рублей. Входной файл содержит заявки клиентов. В заявке указано время прихода клиента и время ухода клиента. Клиент занимает один из столиков с минимальным номером. Столы пронумерованы начиная с единицы. Следующий клиент может занять столик со следующей минуты после освобождения столика. Если пришло несколько клиентов одновременно, то садится за стол клиент с наименьшим временем пребывания. Минута ухода клиента не идёт в учёт стоимости его посещения заведения. Если в момент прибытия клиента все столы заняты, то клиент ждёт ближайший столик, который освободится раньше всего, не более 10 минут и садится за него. Если за 10 минут не нашлось свободного столика, то клиент уходит. Тайм-кафе в качестве компенсации предоставляет ему такое количество бесплатных минут, равное времени его ожидания столика. Клиент обязательно пробудет T минут (T – разница между временем прибытия и отбытия) и дополнительно проведет компенсированное время в тайм-кафе. Определите сколько клиентов сможет занять столик, а также сколько рублей тайм-кафе заработает.
Входные данные: В первой строке файла находится натуральное число K, не превышающее 1000, – количество столиков в тайм кафе. Во второй строке файла находится натуральное число N, не превышающее 1000 – количество клиентов. В последующих строках записано по два числа, не превышающих 1440: время прибытия клиента, время ухода клиента.
Запишите в ответ два числа через пробел: количество клиентов, которые смогли занять столик, и количество рублей, которое заработало тайм-кафе.
Решение (Python)
file = open(’26_1__3cjum.txt’) count_tables = int(file.readline()) # количество столиков в тайм-кафе count_client = int(file.readline()) # количество клиентов # считываем и сортируем время прибытия и ухода для каждого клиента array_client = sorted(list(map(int, i.split())) for i in file) count = 0 # количество клиентов, занявших столик cost = 0 # сумма заработанных денег # инициализируем список, в котором будем хранить у соответствующего столика время ухода клиента tables = [-1] * count_tables for start, end in array_client: # проходимся циклом по каждому клиенту ok = False # флаг, сел клиент за столик или нет for i in range(len(tables)): # проходимся по списку столиков if start >= tables[i] + 1: # если время прибытия клиента больше, чем значение у столика tables[i] = end # тогда записываем за столик время ухода клиента count += 1 cost += 7 * (end - start) # 1 минута = 7 рублей. ok = True break if not ok: # если флаг равен False min_table = min(tables) # ищем ближайшее время ухода другого клиента wait = min_table - start + 1 # Высчитываем время ожидания клиента, # количество минут, которое клиенту нужно подождать чтобы занять место за столиком if wait <= 10: # если ожидание меньше 10 минут ind = tables.index(min_table) T = end - start # Увеличиваем время освобождения найденного столика на: # 1 - так как нужно учесть, что сесть можно со следующей минуты # Т - так как клиент ждал столика Т минут # wait - так как ему добавили бесплатные минуты за ожидание tables[ind] += 1 + T + wait count += 1 cost += 7 * T ok = True print(count, cost)
Специальные программы

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

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

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

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

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

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