На парковке имеется
Входные данные.
Первая строка входного файла содержит целое число N — общее количество автомобилей, в течение суток приехавших на парковку. Каждая из следующих
Гарантируется, что никакие два автомобиля не приезжают одновременно. Если время прибытия автомобиля совпадает со временем окончания стоянки другого автомобиля, вновь прибывший автомобиль может занять освободившееся место, если оно подходит ему по типу. В ответе запишите два целых числа: сначала количество микроавтобусов, которые смогут припарковаться, затем — общее количество автомобилей (как легковых, так и микроавтобусов), которые уедут из-за отсутствия мест.
Ответ:
Приведем решение на языке Python.
f = list(map(lambda x: x.split(), open('26.txt').readlines()[1:]))
sl = dict(sorted({int(i[0]): [int(i[1]), i[2]] for i in f}.items()))
sp = [[], []]
m, run = 0, 0
for k in sl:
sp = [list(filter(lambda x: x > k, x)) for x in sp]
if len(sp[0]) != 70 and sl[k][1] == 'A':
sp[0] += [k + sl[k][0]]
elif len(sp[1]) != 30:
sp[1] += [k + sl[k][0]]; m += 1 if sl[k][1] == 'B' else 0
else:
run += 1
print(m, run)
Ответ: 168 6.
Приведем решение Юрия Красильникова на языке Python.
a = [s.split() for s in open('26.txt')][1:]
a = sorted([[int(x[0]),int(x[1]),x[2]] for x in a])
p = [0]*100
m,b = 0,0
for auto in a:
f=[i for i in range(0 if auto[2]=='A' else 70,100) if p[i]<=auto[0]]
if len(f)>0:
p[f[0]]=auto[0]+auto[1]
if auto[2]=='B':
m += 1
else:
b += 1
print(m,b)

