26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
В прачечной есть K стиральных машин, которые пронумерованы с 1. Принимаемые вещи кладутся в свободную стиральную машину с минимальным номером. Известно время, когда клиенты сдают и забирают вещи (в минутах с начала суток). Среди стиральных машин есть супер-стиральные машины, они стирают вещи в два раза быстрее. У таких машин номер кратен 3. Если время стирки было нечётным, то оно округляется в меньшую сторону. Стиралка доступна для вещей, начиная со следующей минуты, после окончания срока стирки. Если свободных машинок не находится, то вещи не принимаются в стиральную машину и клиент уходит. Если в один момент пришло несколько клиентов, то в первую очередь, вещи принимаются у того, чья стирка займет большее время (без учета использования супер-сиральных машин).
Определите количество пар клиентов, которые постирают свои вещи в супер-стиральной машине при условии, что общее время стирки (с учетом ускорения стирки) кратно 8.
Входные данные:
В первой строке входного файла находится число – количество стиральных машин, во второй строке файла
число
– количество клиентов, сдающих свои вещи (натуральное число, не превышающее 1000). Каждая из
следующих
строк содержит два натуральных числа, не превышающих 1440: время сдачи вещей и время выдачи
вещей.
Выходные данные:
Программа должна вывести одно число: количество подходящих пар клиентов.
file = open(’26.txt’) count_machines = int(file.readline()) # количество стиральных машин count_client = int(file.readline()) # количество клиентов array_client = list(list(map(int,i.split())) for i in file) # cортируем список клиентов по возрастанию времени прихода и по убыванию времени ухода array_client.sort(key = lambda x:(x[0],-x[1])) machines = [-1]*count_machines # симулируем стиральные машины. В каждой ячейке будет записано время освобождения определенной стиральной машины c8 = [0]*8 #подсчет количества стирок с различными остатками от деления на 8 for start,end in array_client: # перебор клиентов for i in range(len(machines)): # проход по стиральным машинам if start > machines[i]: # если текущий клиент может положить вещи в определенную стиральную машину if (i+1) % 3 == 0: # если это супер стиралка tim = (end - start) // 2 # то записываем время выполнения стирки в два раза быстрее machines[i] = start + tim c8[tim % 8] += 1 else: # если это обычная стиралка machines[i] = end # записываем время освобождения break # сбрасываем цикл - переходим к следующему клиенту # считаем количество пар, в которых время стирки # либо кратно 8, либо даёт остаток 4 при делении на 8 pair = c8[0]*(c8[0]-1) // 2 + c8[4]*(c8[4]-1) // 2 for i in range(1, 4): #считаем пары с различными остатками от деления на 8, сумма которых равна 8 pair += c8[i]*c8[8-i] print(pair)
Специальные программы

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

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

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

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

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

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