#P1301. 电梯

    ID: 243 传统题 1000ms 512MiB 尝试: 0 已通过: 0难度: 普及− ← 上一题 下一题 → 随机一题 上传者: 标签 模拟 入门基础
显示设置

电梯

电梯

本题选手包(附加文件)为 7z AES-256 加密,解压密码:p68992F82QkHytbzhgNb

题目描述

铁四角大楼是一栋 nn 层的建筑,楼层从下到上编号为 11 到 nn。楼里只有一部电梯,它一开始停在 11 层。

今天共有 mm 位访客依次使用这部电梯。第 ii 位访客住在第 kik_i 层,他会按下"上"或"下"的按钮,让电梯从当前位置运行到他的楼层,其中电梯当前所在的楼层记为 pip_i。

由于大楼年久失修,电梯的控制系统有一个缺陷:如果某位访客要求的运行距离超过了电梯到该方向边界楼层之间的距离,电梯不会拒绝这个请求,而是直接停到边界楼层,并把这一次请求记为一次"失效"。具体地,设电梯当前在第 pp 层,访客要求向上运行 tt 层:

  • 若 p+t≤np+t\le n,电梯正常到达第 p+tp+t 层;
  • 若 p+t>np+t>n,电梯停在第 nn 层,并记一次失效。

向下运行同理:若 p−t<1p-t<1,电梯停在第 11 层,并记一次失效。

访客离开后,电梯不会自动返回,而是停在刚刚到达的楼层,等待下一位访客。请你求出全部 mm 位访客使用完毕后,电梯停在哪一层,以及一共发生了多少次失效。

输入格式

从文件 lift.in 中读入数据。

第一行包含两个正整数 nn 和 mm,依次表示楼层数与访客数。

接下来 mm 行,每行包含一个字符和一个正整数。字符为 U 表示向上,为 D 表示向下;正整数表示该访客请求的运行距离。

输出格式

输出到文件 lift.out 中。

输出一行两个整数,依次表示电梯最终所在的楼层和失效的总次数。

样例 1 输入

10 2
U 5
D 8

样例 1 输出

1 1

样例 1 解释

电梯初始在 1 层。第一位访客要求向上 5 层,1+5=6≤101+5=6\le 10,电梯到达 6 层。

第二位访客要求向下 8 层,6−8=−2<16-8=-2<1,于是电梯停到 1 层,并记一次失效。

最终电梯在 1 层,失效 1 次。

样例 2 输入

1000 6
U 300
D 500
U 900
D 200
U 1000
D 1

样例 2 输出

999 2

样例 2 解释

电梯从 1 层出发:向上 300 层到 301 层;再向下 500 层时 301−500=−199<1301-500=-199<1,停到 1 层并记一次失效;之后向上 900、向下 200 都合法;向上 1000 层时 901+1000>1000901+1000>1000,停到 1000 层并再记一次失效;最后向下 1 层到 999 层。最终在 999 层,失效 2 次。

样例 3

见选手目录下的 lift/lift3.in 与 lift/lift3.ans。

该样例满足测试点 1∼31\sim 3 的约束条件。

样例 4

见选手目录下的 lift/lift4.in 与 lift/lift4.ans。

该样例满足测试点 20∼2520\sim 25 的约束条件。

数据范围

对于所有测试数据,保证 1≤n≤10181\le n\le 10^{18},1≤m≤1061\le m\le 10^{6},每次请求的运行距离不超过 101810^{18}。

测试点编号 m≤m\le n≤n\le 特殊性质
1,21,2 1010 无
3∼53\sim 5 10310^{3} A
6,76,7 B
8,98,9 无
10∼1210\sim 12 10510^{5} 10910^{9}
13,1413,14 A
15∼1715\sim 17 10610^{6} 无
18,1918,19 101810^{18} A
20,2120,21 B
22∼2522\sim 25 无

特殊性质 A:所有请求都是向上运行。

特殊性质 B:保证任何一次运行都不会越界。