На парковке имеется
Входные данные.
Первая строка входного файла содержит целое число 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 = [[], []]
l, run = 0, 0
for k in sl:
sp = [list(filter(lambda x: x > k, x)) for x in sp]
if len(sp[0]) != 80 and sl[k][1] == 'A':
sp[0] += [k + sl[k][0]]; l += 1
elif len(sp[1]) != 20:
sp[1] += [k + sl[k][0]]; l += 1 if sl[k][1] == 'A' else 0
else:
run += 1
print(l, run)
Ответ: 717 19.
Приведем решение Юрия Лысакова на языке Python.
f = open('26.txt')
f.readline()
a,b,c = [],[],[]
for i in f:
x = i.split()
x[0],x[1] = int(x[0]),int(x[1])
c.append(x)
c.sort()
k3,k4 = 0,0
for i in range(len(c)):
k1,k2 = 0,0
for i1 in a:
if i1 > c[i][0]: k1 += 1
for i1 in b:
if i1 > c[i][0]: k2 += 1
if c[i][2] == 'A':
if k1 < 80:
a.append(c[i][0] + c[i][1])
k4 += 1
else:
if k2 < 20:
b.append(c[i][0] + c[i][1])
k4 += 1
else: k3 += 1
if c[i][2] == 'B':
if k2 < 20:
b.append(c[i][0] + c[i][1])
else: k3 += 1
print(k4,k3)
Приведем решение Юрия Красильникова на языке Python.
f=open('26.txt')
f.readline()
parking=[0]*100
auto=sorted([list(map(int,s.split()[:2]))+[s.split()[2]] for s in f],key=lambda x: x[0])
la,otkaz=0,0
for a in auto:
mesta=[i for i in range((0 if a[2]=='A' else 80),100) if parking[i]<=a[0]]
if mesta:
parking[mesta[0]]=sum(a[:2])
if a[2]=='A': la+=1
else: otkaz+=1
print(la,otkaz)

