看了好多篇别人写的题解,感觉好像不少用unordered_map的都有点错误,于是自己来写一篇。
#include<bits/stdc++.h>
using namespace std;
#define maxn 300005
#define ll long long
const int mod = 1e9 + 7;
unordered_map<int,int>f;
int n,q,x,op,k;
int find(int x){
if(!f[x])return x;
else return f[x]=find(f[x]);
}
int main()
{
scanf("%d%d",&n,&q);
while(q--){
scanf("%d%d",&op,&x);
if(op==1)f[x]=find(x+1);
else{
if(!f[x])printf("%d\n",x);
else{
k=find(x);
if(k>n)printf("-1\n");
else printf("%d\n",k);
}
}
}
}