小红的区间修改(二)
题号:NC296008
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题与《D.小红的区间修改(一)》共享部分题目背景,但是所求内容不同,我们建议您重新阅读题面。

\hspace{15pt}小红拿到了一个长度为 10^{100} 的数组,初始所有元素都是 0
\hspace{15pt}现在小红准备进行 q 次操作,每一次:
\hspace{23pt}\bullet\,小红输入一个区间 [l,r],随后将区间内的元素修改为 x
\hspace{15pt}小红希望你在每次操作后都输出当前数组的元素种类数,即统计数组中不同元素的个数。

输入描述:

\hspace{15pt}第一行输入一个整数 q \left(1\leqq q \leqq 10^5\right),代表操作次数。
\hspace{15pt}此后 q 行,第 i 行输入三个整数 l_i,r_i,x_i \left(1\leqq l_i \leqq r_i \leqq 10^5;\ 1\leqq x_i \leqq 10^9\right),代表第 i 次操作的区间和修改值。

输出描述:

\hspace{15pt}对于每一次操作,新起一行,输出一个整数,代表当前数组的元素种类数。
示例1

输入

复制
3
1 3 1
2 5 2
5 9 3

输出

复制
2
3
4

说明

\hspace{15pt}在这个样例中,数组变化如下:
\hspace{23pt}\bullet\,第一次操作后,数组变成 \{{\color{orange}{1}},{\color{orange}{1}},{\color{orange}{1}},0,0,0,\dots\}
\hspace{23pt}\bullet\,第二次操作后,数组变成 \{1,{\color{orange}{2}},{\color{orange}{2}},{\color{orange}{2}},{\color{orange}{2}},0,\dots\}
\hspace{23pt}\bullet\,第三次操作后,数组变成 \{1,2,2,2,{\color{orange}{3}},{\color{orange}{3}},{\color{orange}{3}},{\color{orange}{3}},{\color{orange}{3}},0,0,\dots\}