Codeforces Beta Round #43 D. Parking Lot

Parking Lot

Lに対してnが小さいので、駐車場の状態ではなく止まっている車を記憶しておく。あらかじめ1台車を停めておくと楽。

L,b,f = map(int,raw_input().split())
n = input()
P = [(-b,0,-1)]     # position,length,id
for i in range(n):
    t,l = map(int,raw_input().split())
    if t==1:
        for j in range(len(P)):
            p = P[j][0]+P[j][1]+b
            if j==len(P)-1 or p+l+f<=P[j+1][0]:
                break
        if p+l<=L:
            P.insert(j+1,(p,l,i))
            print p
        else:
            print -1
    else:
        for i in range(len(P)):
            if P[i][2]==l-1:
                del P[i]
                break