Тема 26. Обработка целочисленной информации с использованием сортировки

26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#81219

В городе N расположено тайм-кафе (кафе, в котором люди платят не за продукты и заказы, а за то, сколько времени они провели в нём). 1 минута – 5 рублей. Входной файл содержит заявки клиентов. В заявке указано время прихода клиента и время ухода клиента. Клиент занимает один из столиков с минимальным номером. Столы пронумерованы начиная с единицы. Следующий клиент может занять столик со следующей минуты после освобождения столика. Если пришло несколько клиентов одновременно, то садится за стол клиент с наименьшим временем пребывания. Время ухода клиента также идёт в учёт стоимости его посещения заведения, время ухода занимает 1 минуту. Если в момент прибытия клиента все столы заняты, то клиент уходит. Определите сколько клиентов сможет занять столик, а также сколько рублей тайм-кафе заработает.

Входные данные: В первой строке файла находится натуральное число K, не превышающее 1000, – количество столиков в тайм кафе. Во второй строке файла находится натуральное число N, не превышающее 1000 – количество клиентов. В последующих строках записано по два числа, не превышающих 1440: время прибытия клиента, время ухода клиента.

Запишите в ответ два числа через пробел: количество клиентов, которые смогли занять столик, и количество рублей, которое заработало тайм-кафе.

Вложения к задаче
Показать ответ и решение

Решение (Python)

file = open(’26_1.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: #проходимся циклом по каждому клиенту
    for i in range(len(tables)): #проходимся по списку столиков
        if start > tables[i]: #если время прибытия клиента больше, чем значение у столика
            tables[i] = end #тогда записываем за столик время ухода клиента
            count += 1
            cost += 5 * (end - start + 1)# 1 минута = 5 рублей. Учитываем также минуту ухода
            break
print(count,cost)

Ответ: 112 175100

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!