#P7505. 「Wdsr-2.5」小小的埴轮兵团

    ID: 6398 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 2 上传者: 标签>模拟2021洛谷原创排序队列二分查找树状数组

「Wdsr-2.5」小小的埴轮兵团

题目背景

杖刀偶磨弓是埴轮兵团的首长。

作为埴轮兵长,训练埴轮兵团是很平常的事情。

题目描述

磨弓下达命令让埴轮们站成一行。不妨认为它们站在了一个数轴上,每个埴轮的位置就是它脚下数轴的数字。磨弓会告诉你,第 ii 个埴轮的位置为 aia_i不保证 ai\bm {a_i} 升序

数轴的长度是有限制的,具体的范围是 [k,k][-k,k] 。也就是说,如果某个埴轮移出了这个范围,它就脱离了这个队列了,并且不会再次回到队列当中。

为了训练埴轮,磨弓给埴轮们下达了 mm 个指令,有以下 3 种:

  • 指令 1:全体埴轮向数轴的正方向移动 xx 个单位长度。
  • 指令 2:全体埴轮往数轴的反方向移动 xx 个单位长度。
  • 指令 3:依次报数,统计目前队列里一共有多少个埴轮。

但是磨弓发现,埴轮兵团的大小实在是太大了,以至于执行这些操作变得非常缓慢。尽管如此,磨弓仍然希望你告诉她所有指令 3 的结果。

输入格式

第一行共有 33 个整数 n,m,kn, m, k,含义如题面所示。

第二行共有 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n,表示每个埴轮的位置。

接下来 mm 行,有 11 或者 22 个正整数,描述一条指令。首先是一个整数 op\operatorname{op},表示这条指令的类型。如果 1op21 \leq \operatorname{op} \leq 2,接下来还会输入一个整数 xx

输出格式

对于每条指令 3 ,输出一个整数,表示目前还在队列中的埴轮的数目。

3 4 3
-1 1 2
2 3
3
1 5
3
2
1

提示

样例 1 说明

一共有三个埴轮。初始时,它们的站位分别是 [1,1,2][-1,1,2]

  • 第一次操作后,所有埴轮向左移动 33 格,位置变成了 [4,2,1][\underline{\bm{-4}},-2,-1] 。第一个埴轮被移出了数轴。
  • 第二次操作后,输出当前的埴轮数目,为 22 个。
  • 第三次操作后,所有埴轮向右移动 55 格,位置变成了 [3,\underline \bm4] ,第二个埴轮被移出了数轴。
  • 第四次操作后,输出当前的埴轮数目,为 11 个。

样例 2, 3

见下发附件。

数据规模与约定

  • 对于 30%30\% 的数据,1n,m5×1031 \leq n, m \leq 5\times 10^3
  • 对于另外 20%20\% 的数据,1k5001\le k\le 500
  • 对于 100%100\% 的数据,1n,m3×1051 \leq n, m \leq 3\times 10^51k,x2×1091 \leq k, x \leq 2 \times 10^9kaik-k \le a_i \le k