题目描述
给定长度为 N 的序列 A=(A1,A2,…,AN)。每个元素都是 0, 1 或 2。
按顺序处理 Q 个查询。每个查询有以下两种类型之一:
1 L R
:输出序列 (AL,AR) 的逆序数。
2 L R S T U
:对于所有满足 LleqileqR 的 i,如果 Ai=0,则替换为 S;如果 Ai=1,则替换为 T;如果 Ai=2,则替换为 U。
什么是逆序数?序列 B=(B1,B2,…,BM) 的逆序数是形如 (i,j) 的整数对的数量,其中 1leqi<jleqM 且 Bi>Bj。
约束条件
- 1leqNleq105
- 0leqAileq2
- 1leqQleq105
- 在每个查询中,1leqLleqRleqN。
- 在第二种查询中,0leqS,T,Uleq2。
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
N Q
A1 A2 … AN
Query1
Query2
⋮
QueryQ
其中,Queryi 表示第 i 个查询,可以是以下格式之一:
1 L R
2 L R S T U
输出
按照给定顺序,逐行输出第一种查询的响应结果。
示例输入 1
5 3
2 0 2 1 0
1 2 5
2 2 4 2 1 0
1 2 5
示例输出 1
3
4
初始时,A=(2,0,2,1,0)。
- 第一个查询,输出序列 (A2,A3,A4,A5)=(0,2,1,0) 的逆序数 3。
- 第二个查询,将 A 修改为 (2,2,0,1,0)。
- 第三个查询,输出序列 (A2,A3,A4,A5)=(2,0,1,0) 的逆序数 4。
示例输入 2
3 3
0 1 2
1 1 1
2 1 3 0 0 0
1 1 3
示例输出 2
0
0