CF46D Parking Lot

题目描述

如今,在城市中成功停车变得越来越困难。让我们设想一段长为 $L$ 米的街道,其中设有一个停车区。驾驶员应将汽车严格平行于人行道,停在街道的右侧(请记住,题目的作者所在国家是右侧通行)。每位驾驶员在停车时都希望为自己留有额外的空间方便移动车辆,因此会寻找一个位置,使得其车后的距离不少于 $b$ 米,车前的距离不少于 $f$ 米(如果车后没有车,则可以停在停车区的边缘;如果车前没有车,同理)。我们在路边引入一条坐标轴,停车区起于 $0$ 点,止于 $L$ 点。车辆沿着坐标增长的方向行驶,并寻找第一个(坐标最小的)可停车位。若没有合适车位,该司机则驶离继续寻找。期间,某些车辆可能会离开停车区腾出空间。请编写程序,根据车辆进出停车区的信息,对停车过程进行模拟,确定每辆车的实际停车位置。

输入格式

第一行包含三个整数 $L$、$b$ 和 $f$($10 \leq L \leq 100000, 1 \leq b, f \leq 100$)。 第二行包含一个整数 $n$($1 \leq n \leq 100$),表示请求总数。 接下来 $n$ 行,每行描述一个请求,由两个数字组成。第一个为请求类型。 - 如果请求类型为 $1$,第二个数字表示驶入车辆的长度(单位为米,整数,$1 \leq$ 车长 $\leq 1000$),该车辆希望寻找车位。 - 如果请求类型为 $2$,第二个数字表示某一之前类型为 $1$ 的请求编号(编号从 $1$ 开始),即编号为该数字的车辆现在离开停车区。保证车辆离开时确实停在停车区。

输出格式

对于每个类型为 $1$ 的请求,若该车找不到合适车位,请输出 $-1$。否则,输出该车泊入后车尾距离车位起点的距离。

说明/提示

由 ChatGPT 5 翻译