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

26.09 Прочие прототипы

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

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

Задача 1#63604

В салоне красоты работают A количество мастеров. У каждого человека есть свой номер, начиная с единицы. Директору салона нужно записать B клиентов на следующий день. Порядок записи следующий: клиент звонит в салон и называет время в которое каждый клиент хочет прийти в салон, и в какое время он хочет завершить прием. Директор записывает клиента к мастеру с наименьшим номером, который свободен в тот промежуток, который нужен клиенту. Мастера могут принимать клиентов со следующей минуты после предыдущего клиента. Если таких мастеров нет, то директор сразу во время звонка просит прощения у клиента и сообщает, что он не может записать его.

Длительность рабочего дня салона составляет 600 минут.

Определите сколько клиентов смог записать директор и номер мастера, к которому записался последний клиент.

Входные данные. В первой строке входного файла находится число А – количество мастеров в салоне (натуральное число, не превышающее 1000). Во второй строке находится число В – количество клиентов, которые хотят записаться. В следующих В строках находятся два значения: минута с которой клиент хочет записаться и минута, до которой клиент планирует записаться, отсчёт ведётся от начала рабочего дня салона (все числа положительные, не превышающие 600), для каждого клиента – в отдельной строке. Данные в файле даны в том порядке, в котором клиенты звонили в салон.

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

Вложения к задаче
Показать ответ и решение
f = open(’26_5.txt’)
k = int(f.readline()) # Кол-во мастеров
n = int(f.readline()) # Кол-во клиентов

# Список с записями клиентов по времени
times=[list(map(int, f.readline().split())) for _ in range(n)]
# Массив, в который будут по порядку заноситься номера мастеров
clients = []

# Список с графиком времени каждого специалиста
# Единицей будут помечаться занятые минуты мастера
specialists=[[0]*601 for _ in range(k)]
for start, end in times:
    # Пробегаемся по каждому специалисту,
    # если график свободен для клиента, то добавляем его
    for num in range(k):
        if sum(specialists[num][start:end+1])==0:
            # Добавляем в список номер мастера, к которому обратился клиент
            # (прибавляем единицу, так как нумерация мастеров с единицы, а не с нуля)
            clients.append(num+1)
            # Помечаем занятый период в графике мастера
            for time in range(start, end+1):
                specialists[num][time]=1
            # Прерываем перебор, так как текущий клиент занял место у мастера
            break

# len(clients) — сколько раз клиенты обращались к мастерам
# clients[-1] — номер последнего мастера, к которому обратились
print(len(clients), clients[-1])

Ответ: 328 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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