26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)
Ошибка.
Попробуйте повторить позже
На вокзале есть камер хранения для пассажиров, которые пронумерованы с единицы. Приходя на вокзал, пассажир
кладет свои вещи в свободную камеру с минимальным номером. Известно время, когда пассажиры сдают и забирают
вещи (в минутах с начала суток). Камера доступна для багажа начиная со следующей минуты после окончания срока
хранения. В случае, когда свободных камер не находится, багаж не принимается и пассажир уходит. Если несколько
человек приходит сдавать багаж одновременно, то сначала сдает багаж тот пассажир, время выдачи багажа которого
меньше.
Определите, сколько пар пассажиров смогут сдать свой багаж в течении дня при условии, что общее время хранения багажа этих пассажиров кратно 42.
Входные данные. В первой строке входного файла находится число – количество пассажиров, сдающих багаж
(натуральное число, не превышающее 10000), во второй строке число
– количество камер хранения (натуральное
число, не превышающее 1000). Каждая из следующих
строк содержит два натуральных числа, не превышающих
1440: время сдачи багажа и время выдачи багажа.
Выходные данные. Программа должна вывести одно число: количество пар пассажиров, суммарное время хранения багажа которых кратно 42.
f = open(’2-26__674z4.txt’) n = int(f.readline()) k = int(f.readline()) a = sorted([list(map(int, i.split())) for i in f]) ch = [-1 for i in range(k)] #список с ячейками для хранения багажа c42 = [0]*42 #подсчет количества пассажиров с различными остатками от деления на 42 for i in a: #перебор пассажиров for j in range(k): #проход по ячейкам в поисках свободной if (i[0] > ch[j]): ch[j] = i[1] #добавляем багаж в ячейку tim = i[1]-i[0] #время хранения багажа c42[tim % 42] += 1 #подсчитываем это время хранения break # считаем количество пар, в которых время хранения багажа # либо кратно 42, либо даёт остаток 21 при делении на 42 pair = c42[0]*(c42[0]-1) // 2 + c42[21]*(c42[21]-1) // 2 for i in range(1, 21): #считаем пары с различными остатками от деления на 42, сумма которых равна 42 pair += c42[i]*c42[42-i] print(pair)
Специальные программы

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

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

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

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

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

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