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

题目描述

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

\hspace{15pt}小红拿到了一个长度为 10^{100} 的数组,初始所有元素都是 0
\hspace{15pt}现在小红准备进行 q 次操作,每一次:
\hspace{23pt}\bullet\,小红查询一个区间,如果区间内所有元素都是 0,那么将区间修改为首项为 1、公差为 1 的等差数列;否则不进行任何操作。
\hspace{15pt}小红希望你在每次操作后都输出当前数组的元素种类数,即统计数组中不同元素的个数。

输入描述:

\hspace{15pt}第一行输入一个整数 q \left(1\leqq q \leqq 3 \times 10^5\right),代表操作次数。
\hspace{15pt}此后 q 行,第 i 行输入两个整数 l_i,r_i \left(1\leqq l_i \leqq r_i \leqq 3 \times 10^5\right),代表第 i 次操作的区间。

输出描述:

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

输入

复制
3
1 3
2 5
5 9

输出

复制
4
4
6

说明

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