题目描述
给你一个长度为n的数组 \(a_1, a_2, \dots a_n\) 。
一开始这n个元素都为0。
然后有m次操作,每次操作有两种操作类型:
update x y a
:将区间 \([x,y]\) 范围内的元素都置为a
;query x y
:询问区间 \([x,y]\) 范围内有多少不同的数据段。
举个例子,如果一个区间内有如下的数 \(3,3,2,2,2,1\) ,那么它有3段数据段,分别是 \(3,3\),\(2,2,2\) 和 \(1\) 。
输入格式
输入的第一行包含两个整数 \(n,m(1 \le n \le 10^5, 1 \le m \le 10^5)\) 。
接下来 \(m\) 行每行可能是两种形式:
update x y a
:将区间 \([x,y]\) 范围内的元素都置为a
;query x y
:询问区间 \([x,y]\) 范围内有多少不同的数据段。
其中 \(1 \le x \le y \le n, 1 \le a \le 10^9\) 。
输出格式
对于每次 query
询问,输出该区间的数据段的个数。
样例输入
3 3
update 1 2 1
query 1 2
query 2 3
样例输出
1
2