用F数组表示区间内有几个数
void build(int l,int r,int rt)
{
f[rt] = (r-l)+1;
if(l==r)
{
return ;
}
int mid = (l+r)>>1;
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
}
void ask(int l ,int r,int rt,int k )
{
if(l==r)
{
ans = l ;
}
if(k>=f[rt<<1|1])
{
ask(l,mid,rt<<1,k - f[rt<<1|1]);
}
else
{
ask(mid+1,r,rt<<1|1,k);
}
}
void modfiy(int l,int r,int rt,int k )
{
f[rt--];
if(l==r)
{
return ;
}
int mid = (l+r)>>1;
if(k<=mid)
modfiy(l,mid,rt<<1,k);
else
modfiy(mid,r,rt<<1|1,k);
}