刚学,把这题当板子做
#include<bits/stdc++.h>
#define N 100005
using namespace std;
int tr[N*4],a,m,n,k1;
void pushup(int k){
tr[k]=tr[k<<1]+tr[k<<1|1];
}
void insert(int k,int l,int r,int num){
if(l==r){
tr[k]++;
return;
}
int mid=(l+r)>>1;
if(num<=mid) insert(k<<1,l,mid,num);
else insert(k<<1|1,mid+1,r,num);
pushup(k);
}
int query(int k,int l,int r,int x){
if(l==r){
return l;
}
int mid=(l+r)>>1;
if(x<mid) return query(k<<1,l,mid,k);
else return query(k<<1|1,mid+1,r,x-mid+1);
}
int main(){
cin>>n>>k1;
for(int i=1;i<=n;i++){
cin>>a;
insert(1,1,n,a);
}
cout<<query(1,1,n,k1);
return 0;
}