对点的操作,最好就用树状数组!
#include <vector>
#include <list>
//#include <map>
#include <set>
#include <queue>
#include <string>
#include <deque>
#include <stack>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <limits.h>
#include <time.h>
#include <string.h>
using namespace std;
int lowbit(int t){return t&(-t);}
int countbit(int t){return (t==0)?0:(1+countbit(t&(t-1)));}
int gcd(int a,int b){return (b==0)?a:gcd(b,a%b);}
#define LL long long
#define PI acos(-1.0)
#define N 100000
#define MAX INT_MAX
#define MIN INT_MIN
#define eps 1e-8
#define FRE freopen("a.txt","r",stdin)
int c[N+5];
void add( int pos,int num ){
while( pos <= N ){
c[pos]+=num ;
pos+=lowbit(pos) ;
}
}
int sum(int x){
int tot=0;
while(x>0){
tot+= c[x];
x -= lowbit(x);
}
return tot;
}
int gao(int a,int k){
int l=a+1, r=N,mid;
int s=sum(a);
int ans=N;
while(l<=r){
mid=(l+r)>>1;
int ss=sum(mid);
if(ss-s>=k){
ans=mid;
r=mid-1;
}
else
l=mid+1;
}
return ans;
}
int main(){
int n;
while( scanf("%d",&n)!=EOF ){
int i,j,k;
int num;
memset(c,0,sizeof(c));
while(n--){
scanf("%d",&num);
if( num==0 ){
int a;
scanf("%d",&a);
add(a,1);
}
else
if(num==1){
int a;
scanf("%d",&a);
if( sum(a)-sum(a-1) == 0 )puts("No Elment!");
else
add(a,-1);
}
else
if(num==2){
int a,k;
scanf("%d%d",&a,&k);
int ans=gao(a,k);
if(ans==N)puts("Not Find!");
else
printf("%d\n",ans);
}
}
}
return 0;
}