EI 在 BJOI 前集训的時候聽到了集合分塊題,他非常弱(現在依然很弱),比別人的演算法多一個 $\log$ ,他想到的解決方法只有將分塊大小修改,從而把複雜度包在裡面變成 $\Theta(n \sqrt{n\log n})$ ,而且見到一道修改過的題後,他又不會做了:
有 $n$ 個集合 $S_i$ ,初始為空,接下來進行 $q$ 組操作:
- 將第 $l$ 個集合到第 $r$ 個集合插入一個元素 $x$ 即對 $l \le i \le r$,$S_i \leftarrow S_i \cup \{x\}$。
- 詢問第 $l$ 個集合到第 $r$ 個集合的交集大小,即 $$\left| \bigcap_{i = l}^r S_i \right|$$
輸入格式
第一行輸入整數 $n, q$
接下來輸入 $q$ 行,每行第一個數 $op$ 為操作類型
對應的輸入為 1 $l\ r\ x$ 或者 2 $l\ r$
輸出格式
對於每個操作 2 即詢問,輸出一個整數且換行表示答案。
範例
輸入 1
3 4
1 1 2 2
1 2 3 1
2 1 2
2 2 2
輸出 1
1
2
說明 1
操作後的各個集合:$[\{2\},\{1,2\},\{1\}]$
所以對於第一個詢問,$\{2\} \cap \{1, 2\} = \{2\}$
輸入 2
2 3
1 1 1 1
1 2 2 1
2 1 2
輸出 2
1
資料範圍
$1\le n, q \le 3 \times 10^5$, $1\le x \le q$, $1 \le l \le r \le n$
Subtask 1 (12 pts.),$1\le n, q \le 500$,插入的元素數量 $|S| \le 10^5$
Subtask 2 (18 pts.),$1 \le n, q \le 5 \times 10^3$,插入的元素數量 $|S| \le 10^5$
Subtask 3 (20 pts.),$1\le n, q \le 10^5$,插入的元素數量 $|S| \le 10^5$
Subtask 4 (28 pts.),$1\le n, q \le 10^5$
Subtask 5 (22 pts.),$1 \le n, q \le 3 \times 10^5$
Subtask $+\infty$ (0 pts.),你需要統計對於該區間的每一個子區間的答案之和。