#XMOJ7512. 钓鱼

钓鱼

说明

时间限制:1 Sec 内存限制:256 MB 输入文件fish.in 输出文件fish.out

我们在长度为 $N$ 的区间 $[0,N)$ 中钓鱼。

所有鱼都按照以下规则移动。

  • 一条在时间 $t$ 位置 $x$ 面向左的鱼在时间 $t+1$ 时移动到位置 $x-1$,且不改变方向。特别的,$x=0$ 处的鱼(无法移动到位置 $x-1$)在同一位置向右转向。
  • 一条在时间 $t$ 位置 $x$ 面向右的鱼在时间 $t+1$ 时移动到位置 $x+1$,且不改变方向。特别的,$x=N-1$ 处的鱼(无法移动到位置 $x+1$)在同一位置向左转向。

也就是说,如果鱼能移动到前面,就前进 $1$,如果不能移动,就原地转向。

最初,在 $t=0$ 时,钓鱼池中没有鱼。

给出了以下三种类型的查询,请按顺序处理。

1、$L$ $t$ $y$ $z$ —— $z$ 条鱼在时间 $t$ 的位置 $y$ 被释放到左侧。($z$ 鱼全部面向左)

2、$R$ $t$ $y$ $z$ —— $z$ 条鱼在时间 $t$ 的位置 $y$ 被释放到右侧。($z$ 鱼全部面朝右)

3、$C$ $t$ $y$ $z$ —— 输出时间 $t$ 区间 $[y,z)$ 内的鱼总数。

输入格式

第一行两个整数 $N,Q$,表示区间长度为 $N$,共有 $Q$ 个查询。

后续 $Q$ 行,第 $i$ 行的 $4$ 个整数 $x_i,t_i,y_i,z_i$ 表示一次查询,其中 $x_i$ 为 $L$、$R$、$C$ 中的一个表示查询的类型,$t_i,y_i,z_i$ 表示查询的参数,如题面描述。

输出格式

对每个 $x=C$ 的查询,输出一行,一个整数,表示答案。

样例

样例 1

10 3
R 1 2 1
L 2 5 1
C 3 4 5

2

样例 2

5 4
L 1 1 2
R 2 4 2
C 3 2 4
C 5 2 4

0
4

样例 3

10 10
C 1 3 8
L 2 1 2
R 3 7 3
C 4 1 5
C 5 0 6
L 6 2 3
R 7 3 5
C 8 2 10
R 9 7 1
L 10 6 1

0
0
2
10

数据范围

对于 20% 的数据,$N \le 100$,$Q \le 100$,当 $x=L$ 或 $x=R$ 时,$1 \le z_i \le 100$。

对于 100% 的数据:$1 \le N \le 2 \times 10^5$,$1 \le Q \le 8 \times 10^4$,$0 \le t_1 \lt t_2 \lt ... \lt t_Q \le 10^8$。

当 $x=L$ 或 $x=R$ 时,$0 \le y_i \lt N$,$1 \le z_i \le 10^8$

当 $x=C$ 时,$0 \le y_i \lt z_i \le N$。