0的时候增加元素 1的时候删除 2的时候查找第几个比当前数大的
//#include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int M = 100005;
int N;
int d[100005];
int s[100005];
int flag;
int s1[100005];
int lowbit(int x)
{
return x&(-x);
}
void update(int x,int num)
{
while(x<=M)
{
d[x]+=num;
x+=lowbit(x);
}
}
//int update2(int x,int num,int y)
//{
// if(!d[y] && !flag)
// {
// // cout<<d[5]<<endl;
// // cout<<"asd"<<endl;
// return 0;
// }
//
// while(x<=M)
// {
//
//
// if(!flag)
// {
// num=d[x];
// d[x]=0;
// flag=1;
// }
// else
// {
// d[x]-=num;
// }
//
// x+=lowbit(x);
// }
// return 1;
//
//}
int getsum(int x)
{
int s=0;
while(x>0)
{
s+=d[x];
x-=lowbit(x);
}
return s;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int cnt=0;
memset(d,0,sizeof(d));
memset(s,0,sizeof(s));
while(n--)
{
int m;
scanf("%d",&m);
int temp;
if(!m)
{
scanf("%d",&temp);
update(temp,1);
cnt++;
}
else if(m==1)
{
scanf("%d",&temp);
if(getsum(temp)-getsum(temp-1)) //机智啊
{
cnt--;
update(temp,-1); //可以直接减去 就是删除 哎 居然没想到
}
else
cout<<"No Elment!"<<endl;
}
else if(m==2)
{
int a,b;
scanf("%d%d",&a,&b);
int shu=cnt-getsum(a); //QAQ
int ji=getsum(a);
if(shu>=b)
{
int mid,l=a+1,r=100000;
while(l<=r)
{
mid=(l+r)>>1;
if(getsum(mid)-ji>=b)
r=mid-1;
else
l=mid+1;
}
printf("%d\n",l);
}
else
{
cout<<"Not Find!"<<endl;
}
}
}
}
return 0;
}