Известно, что путь межрегионального автобуса проходит через А населенных пунктов. У контроллёра есть список, содержащий В заявок на поездку, при этом в каждой заявке указано на какой остановке пассажир будет садиться в автобус и на какой остановке он выйдет. Известно, что в автобусе всего С мест. На остановках сначала происходит высадка пассажиров, затем посадка.
Когда пассажиры приходят на посадку, контроллёр в первую очередь пропускает того, чей путь дольше остальных. При этом место пассажира определеяется как свободное и чей номер минимален.
Определите количество пассажиров, которые смогут добраться до пункта своего назначения и в скольких участках между соседними городами будут полностью заняты места.
Входные данные. В первой строке файла задано три числа: A (2 M
2000) – количество населенных пунктов, в которых останавливается автобус, C (1
K
1000) – количество мест в автобусе и B (1
N
10000) – количество пассажиров, желающих проехать на автобусе. В каждой из последующих N строк располагаются пары чисел: сначала номер населенного пункта, откуда хочет начать свою поездку пассажир, затем номер населенного пункта, где пассажир собирается сойти с автобуса.
Выходные данные. Два числа: сначала количество пассажиров, которые смогут добраться до нужной им станции, затем количество участков между соседними городами, в которых места будут полностью заняты.
with open(’26_1.txt’) as f:
m,k,n=map(int, f.readline().split())
s=[list(map(int, f.readline().split())) for _ in range(n)]
s.sort(key=lambda x: (x[0], -x[1]))
per=[[0]*(m+1) for _ in range(k)]
cnt=0
for st,fn in s:
for i in range(k):
if per[i][st]==0:
cnt+=1
for j in range(st,fn):
per[i][j]=1
break
c_per=0
for p in range(1,m+1):
if all(per[i][p]==1 for i in range(k)):
c_per+=1
print(cnt, c_per)