给出
n
≤
1
e
9
n\leq1e9
n≤1e9,
q
≤
1
e
6
q\leq1e6
q≤1e6次询问,每次询问两种操作:将
x
x
x这个数置为不可用,或者查询从
x
x
x开始第一个可用的数。
用并查集维护当前值的最近的一个可用的值,用map纪录每个值。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll INF=LONG_LONG_MAX;
unordered_map<int,int> fa;
int find(int x) {
if(!fa.count(x)) return x;
else return fa[x]=find(fa[x]);
}
int main() {
int n,q;
scanf("%d%d",&n,&q);
while(q--) {
int opt,x;
scanf("%d%d",&opt,&x);
if(opt==1) fa[x]=find(x+1);
else printf("%d\n",find(x));
}
return 0;
}