我们定义:称未从该集合中出现的最小正整数为该集合的 MEX ,如集合 D={1,1,4,5,1,4,2} 的 MEX ,即MEX(D)=3。
描述
现在有一个空的可重正整数集合 S,有 n 次操作。
1 l r
表示把整数 l,l+1...r−1,r 加入到 S 中;
2
表示询问集合 S 的 MEX;
3 x
表示把集合S中的所有值为x的数删掉(如果集合中没有 x 可以选择忽略)
输入
第一行一个整数 n.
接下来 n 行:
-
1 l r
表示把整数 l,l+1...r−1,r 加入到 S 中(保证l⩽r);
-
2
表示询问集合 S 的 MEX;
-
3 x
表示把集合S中的所有值为x的数删掉.
输出
对于每个操作2,输出一个数表示询问的答案,一个数一行。
样例1
Input:
6
1 5 7
1 1 3
3 6
2
1 3 4
2
Output:
4
6
【样例1说明】
集合一开始为空。
- 加入5,6,7,S={5,6,7};
- 加入1,2,3,S={1,2,3,5,6,7};
- 删除6,S={1,2,3,5,7}
- MEX(S)=4
- 加入3,4,S={1,2,3,3,4,5,7}
- MEX(S)=6
【数据规模与约定】
本题采用捆绑测试。
- Subtask 1 (5 pts) : n⩽100,l,r⩽105
- Subtask 2 (25 pts) : n⩽103
- Subtask 3 (10 pts) : l,r⩽105,且没有删除操作;
- Subtask 4 (25 pts) : l,r⩽105
- Subtask 5 (35 pts) : 无特殊限制。
对于 100% 的数据,保证n⩽2×105,1⩽l⩽r⩽109;
【解法】??
对于105的值域,开个线段树暴力就好。
对于109的值域,先离线,离散化,然后对于每个数ai,设它离散化为bi,然后再开一个ai+1离散化为bi+0.5。如果处理时ai+1==ai+1,就带上bi+0.5,就好了(吧)?
求正确性证明,和直接用map数组开线段树的可能性和时间复杂度。