题意:1-n的序列,有两个操作
1.删除 x
2.查询大于等于x的第一个没有没删除的数
题解:需要反向插入,第一种办法是直接插入UNordered map后,暴力找比x大的数
这种办法如果按照数据范围来出肯定t,数据水
第二种办法是按照并查集的方法压缩路径
第二种正解
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mem(s) memset(s, 0, sizeof(s))
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const int maxn = 1e6+5;
const int mod = 998244353;
unordered_map<int,int> mp;
int Find(int x){
if(!mp.count(x))return x;
else return mp[x]=Find(mp[x]);
}
int main()
{
int n,q;
scanf("%d%d",&n,&q);
while(q--){
int z,x;
scanf("%d%d",&z,&x);
if(z==1)
mp[x]=Find(x+1);
else {
printf("%d\n",Find(x));
}
}
return 0;
}