На вокзале есть камер хранения для пассажиров, которые пронумерованы с единицы. Приходя на вокзал, пассажир кладет свои вещи в свободную камеру с минимальным номером. Известно время, когда пассажиры сдают и забирают вещи (в секундах с начала суток). Камера доступна для багажа начиная со следующей секунды после окончания срока хранения. В случае, когда свободных камер не находится, багаж не принимается и пассажир уходит.
Определите, пару пассажиров, у которых суммарное время хранения багажа максимально и кратно 47.
Входные данные. В первой строке входного файла находится число – количество пассажиров, сдающих багаж (натуральное число, не превышающее 10000), во второй строке число
– количество камер хранения (натуральное число, не превышающее 1000). Каждая из следующих
строк содержит два натуральных числа, не превышающих 86400: время сдачи багажа и время выдачи багажа.
Выходные данные. Программа должна вывести одно число: максимальное суммарное время хранения багажа двух пассажиров, кратное 47.
f = open(’26.txt’)
n = int(f.readline())
k = int(f.readline())
a = sorted([list(map(int, i.split())) for i in f])
ch = [[] for i in range(k)] #список с ячейками для хранения багажа
mx_kr_47 = -1
c47 = [0]*47 #подсчет количества пассажиров с различными остатками от деления на 47
for i in a: #перебор пассажиров
for j in range(k): #проход по ячейкам в поисках свободной
if (not ch[j]) or (i[0] > ch[j][-1][1]):
ch[j].append(i) #добавляем багаж в ячейку
tim = i[1]-i[0] #время хранения багажа
if tim % 47 == 0:
if tim >= mx_kr_47:
c47[0] = mx_kr_47
mx_kr_47 = tim
elif tim > c47[0]:
c47[0] = tim
elif tim > c47[tim % 47]:
c47[tim % 47] = tim #подсчитываем это время хранения
break
mx_ans = c47[0]+mx_kr_47
for i in range(1, 24):
if c47[i] + c47[47-i] > mx_ans:
mx_ans = c47[i] + c47[47-i]
print(mx_ans)