There are nn points in an array with index from 11 to nn, and there are two operations to those points.
1: 1 \ x1 x marking the point xx is not available
2: 2 \ x2 x query for the index of the first available point after that point (including xx itself) .
Output
Output the answer for each query.
样例输入 复制
5 3
1 2
2 2
2 1
样例输出 复制
3
1
//利用并查集模拟实现一个链表
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> fa;
int find(int x)
{
if(!fa.count(x)) return x;
return fa[x]=find(fa[x]);
}
int main()
{
int n,q,op,x;
scanf("%d %d",&n,&q);
while(q--)
{
scanf("%d %d",&op,&x);
if(op==1)
{
fa[x]=find(x+1);
}
else
{
int res=find(x);
if(res>n) res=-1;;
printf("%d\n",res);
}
}
return 0;
}