26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
В прачечной есть K стиральных машин, которые пронумерованы с 1. Принимаемые вещи кладутся в свободную стиральную машину с минимальным номером. Известно время, когда клиенты сдают и забирают вещи (в минутах с начала суток). Среди стиральных машин есть супер-стиральные машины, они стирают вещи в 1.5 раза быстрее. У таких машин номер кратен 7. Если время стирки в супер-стиральной машине получилось не целым, то оно округляется до целого числа в меньшую сторону. Стиральная машина доступна для вещей, начиная со следующей минуты, после окончания срока стирки. Если свободных машинок не находится, то вещи не принимаются в стиральную машину и клиент уходит. Если в один момент пришло несколько клиентов, то в первую очередь, вещи принимаются у того, чья стирка займет большее время (без учета использования супер-стиральных машин).
Определите максимальное суммарное время стирки пары клиентов, таких что один клиент из пары постирал вещи в обычной машинке, а второй в супер-стиральной машине, при этом суммарное время должно быть кратно 19.
Входные данные:
В первой строке входного файла находится число – количество стиральных машин, во второй строке файла
число
– количество клиентов, сдающих свои вещи (натуральное число, не превышающее 1000). Каждая из
следующих
строк содержит два натуральных числа, не превышающих 1440: время сдачи вещей и время выдачи
вещей.
Выходные данные:
Программа должна вывести одно число: максимальное суммарное время кратное 19 подходящей пары клиентов.
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 # симулируем стиральные машины. В каждой ячейке будет записано время освобождения определенной стиральной машины cs19 = [0]*19 #подсчет количества стирок с различными остатками от деления на 19 c19 = [0]*19 #подсчет количества супер-стирок с различными остатками от деления на 19 for start,end in array_client: # перебор клиентов for i in range(len(machines)): # проход по стиральным машинам if start > machines[i]: # если текущий клиент может положить вещи в определенную стиральную машину if (i+1) % 7 == 0: # если это супер стиралка tim = int((end - start) // 1.5) # то записываем время выполнения стирки в два раза быстрее machines[i] = start + tim cs19[tim % 19] = max(cs19[tim % 19], tim) else: # если это обычная стиралка machines[i] = end # записываем время освобождения tim = (end - start) # то записываем время выполнения стирки c19[tim % 19] = max(c19[tim % 19], tim) break # сбрасываем цикл - переходим к следующему клиенту # считаем максимальное суммарное время кратное 19 mx_ans = c19[0] + cs19[0] for i in range(1, 19): mx_ans = max(mx_ans, c19[i] + cs19[19-i]) print(mx_ans)
Специальные программы

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

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

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

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

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

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