#M0003. 电梯
电梯
题目描述
本题使用文件输入输出:输入文件名为 lift.in,输出文件名为 lift.out。
一栋大楼有 层,从下到上编号 。大楼里只有一部电梯,开始时停在第 层。
电梯按顺序收到了 个请求,第 个请求是「去第 层」。电梯严格按收到的顺序处理:处理完第 个请求(到达第 层)后,才去处理第 个。电梯从第 层运行到第 层,经过的楼层数记为 。
如果一个请求的目标楼层就是电梯当前所在的楼层,电梯原地不动,直接处理下一个请求。
请你求出:
- 电梯处理完全部 个请求后,一共经过了多少楼层;
- 电梯一共改变了多少次运行方向。电梯每次运行的方向要么向上、要么向下。第一次运行不算改变方向;之后每次运行,如果方向与上一次运行的方向相反,就算改变了一次方向。原地不动不算一次运行,既不计楼层也不影响方向。
输入格式
输入文件名为 lift.in。
第一行两个整数 ,表示请求个数和大楼层数。
第二行 个整数 ,表示按顺序收到的 个请求的目标楼层。
输出格式
输出文件名为 lift.out。
一行两个整数,用一个空格隔开,分别表示电梯经过的楼层总数和改变方向的次数。
样例 #1
样例输入 #1
6 10
5 2 2 8 8 3
样例输出 #1
18 3
样例解释
电梯从第 层出发:
| 请求 | 运行 | 经过楼层 | 方向 | 是否改变方向 |
|---|---|---|---|---|
| 上 | 第一次运行,不算 | |||
| 下 | 是(第 次) | |||
| 原地不动 | — | 不算运行 | ||
| 上 | 是(第 次) | |||
| 原地不动 | — | 不算运行 | ||
| 下 | 是(第 次) |
总共经过 层,改变方向 次。
样例 #2
样例输入 #2
5 6
1 1 4 4 6
样例输出 #2
5 0
样例解释
前两个请求都是第 层,电梯原地不动。之后 、 都是向上,中间的「」原地不动,方向从未改变。
样例 #3
样例输入 #3
见附件中的 lift/lift3.in。
样例输出 #3
见附件中的 lift/lift3.ans。
提示
数据范围
- 对于 的数据:,;
- 对于 的数据:;
- 对于 的数据:,,。
提示:请注意经过楼层的总数可能很大。
附件
相关
在下列比赛中: