巡逻机器人
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

某高档商场最近购入了一批巡逻机器人,该种机器人可以在夜间对商场的各个门口进行自动巡逻。

商场是一个环形建筑物,商场的  n  个门口均匀分布,顺时针依次编号  1-n  , 1 号门与  n  号门相邻。商场有  m  个巡逻机器人,起始阶段,每个机器人都会位于商场的其中一个门口,它们都有初始的巡逻方向,且能在 1 个单位时间能巡逻至下一个门口。机器人之间有一个特殊的设定,就是当两个巡逻机器人在巡逻中相遇时,他们就都会调转巡逻方向,往反方向继续巡逻。

现在,商场的管理人员得到了各个机器人所在的位置,以及他们的初始巡逻方向,他想知道这些机器人巡逻完商场每一个门口最少需要多长时间。

输入描述:

第一行两个整数 n , m ,代表商场有 n (  ) 个门,m (  ) 个机器人。


后面 m 行,每行包含一个整数 x (  ) 以及一个字符 c  (  ) ,代表各个机器人起始所在的商场门口编号,以及起始的巡逻方向。

其中 L 代表逆时针方向巡逻,R 代表顺时针方向巡逻。

输出描述:

输出一个整数,代表机器人巡逻完每个门口需要的最短时间。
示例1

输入

复制
10 3
1 R
4 R
10 L

输出

复制
3
示例2

输入

复制
10 2
2 L
9 R

输出

复制
6