题意:
给[1,n],n个数,有两种操作:
1 x,删去x
2 x,查询还未被删去的数中大于等于x的最小的数是多少。
input:
output:
做法:按照并查集的方法压缩路径
代码:
#include<bits/stdc++.h> using namespace std; #define int long long unordered_map<int,int> mp; int getf(int x){ if(!mp.count(x)) return x; else{ return mp[x]=getf(mp[x]); } } signed main(){ int n,q; cin>>n>>q; while(q--){ int x,y; scanf("%lld%lld",&x,&y); ){ mp[y]=getf(y+); }else{ printf("%lld\n",getf(y)); } } ; }