#elevator. elevator
elevator
elevator
题目描述
一座摩天大楼有 层。有 名乘客在 1 层的电梯里,其中第 名乘客的目标楼层为 。保证所有 构成了一个排列。
初始时,第 名乘客位于电梯里的第 个位置(第一个位置是电梯门口)。
电梯从 1 楼向上运行,并在每层停靠,每层停靠的过程如下:
- 当电梯到达某乘客的目标楼层时,若该乘客前面(更靠近门)仍有其他乘客,则所有前面的乘客必须暂时离开电梯。
- 暂时离开的乘客在返回电梯时,可以最优地重新排列他们的顺序,以最小化后续的总出电梯次数。
- 每次离开电梯(无论是到达目标楼层出站,还是暂时离开)均计为一次出电梯。
请你计算在最优重排策略下,乘客的总出电梯次数。
现在有给定 次查询。第 次查询前会移除最初位于 位置的乘客。
你需要输出:
- 初始状态下(所有 名乘客都在)的总出电梯次数。
- 每次查询后(移除 乘客,且先前移除的乘客保持不在)的当前乘客集合的总出电梯次数。
输入格式
第一行包含两个非负整数 ,分别表示人数/楼层数和询问数。
第二行包含 个整数 ,其中 是第 个人想要出电梯的楼层。序列 是一个排列。
第三行包含 个整数 ,表示要移除的初始位置。若 ,则没有第三行。
输出格式
在一行中,输出 个整数,其中第 个整数是经过 次询问后(即移除 个人后)的总出电梯次数。
样例输入
5 2
3 4 1 2 5
3 2
样例输出
9 6 4
数据范围与提示
对于所有数据满足:
- ;
- ;
- 两两不同;
- ;
- 两两不同。
| 子任务编号 | 分数 | 限制 |
|---|---|---|
| 1 | 20 | |
| 2 | ||
| 3 | ||
| 4 | 40 | 无限制 |