【题目描述】:
给你 n 个数,每个数的大小在 long long
范围内。
请输出 n 个数升序排序(小的在前,大的在后)并去重后,第 k 个数的排名。
【输入描述】:
第一行两个数 n,k。
第二行 n 个数,每个数的权值在 [0,1015][0,1015] 之间。
【输出描述】:
输出一行一个整数,代表第k个数在升序排序之后的排名。
【样例输入】:
7 6
1 5 5 3 2 6 6
【样例输出】:
5
【时间限制、数据范围及描述】:
时间:1s 空间:256M
对于 %30的数据:n<=100;
对于 100% 的数据:n<=5×1e5;k<=n;
代码在这儿:
#include<bits/stdc++.h>
using namespace std;
long long n,m,k,x;
set<long long> st;
int main(){
freopen("ycz.in","r",stdin);
freopen("ycz.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>x;
st.insert(x);
if(i==m){
k=x;
}
}
int i=1;
for(auto s:st){
if(s==k){
cout<<i;
break;
}
i++;
}
return 0;
}