rt,权值线段树板子题求助qwq
#include<bits/stdc++.h>
#define int long long
using namespace std;
long long n;
long long tree[400005],mark[400005];
long long a[100005],b[100005],cnt,k;
inline void change(int p){
tree[p]=tree[p*2]+tree[p*2+1];
}
inline void build_tree(int l,int r,int p){
if(l==r){
tree[p]=b[l];
return;
}
int mid=(l+r)>>1;
build_tree(l,mid,p*2);
build_tree(mid+1,r,p*2+1);
change(p);
}
inline long long query(int kth,int l,int r,int p){
if(l==r){
return l;
}
int mid=(l+r)>>1;
if(tree[p*2]>=k){
query(k,l,mid,p*2);
}
else{
query(k,mid+1,r,p*2+1);
}
}
long long maxx=0;
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
if(!b[a[i]]){
b[a[i]]=1;
cnt++;
}
maxx=max(maxx,a[i]);
}
if(k<=0||k>cnt){
cout<<"NO RESULT"<<endl;
return 0;
}
build_tree(1,maxx,1);
cout<<query(k,1,maxx,1)<<endl;
}