题目描述
新学年,学校将成立信息学兴趣小组提高班,由于指导教师精力有限,只能以选拔考试的成绩为依据,按从高到低的分数,从N个参加选拔的学生中录取不超过M个成员.录取的成员要尽可能地多,但不得超过M个(含M个),由于可能会有并列分数出现,为了保证公平,有时只得忍痛割爱,可能录取的成员会达不到计划数M,请您编程划定录取分数线.
输入
有N+1行,第一行是报名人数N和录取人数M, 以下N行是考试成绩. N, M和成绩均是1000以内的正整数, N ≥ M.数据保证不会所有的成绩都相同
输出
只有1行,为录取分数线.
样例输入
10 5 99 100 95 98 95 94 93 90 95 90
样例输出
1 2 3 0
提示
【样例解释】
4 个小朋友参加转圈游戏,转圈共进行了 1 轮,在这轮转圈游戏中,所有小朋友依次向
顺时针方向转了 3 个位置,第 0 号小朋友转到第 3 号位置,第 1 号小朋友转到了第 0 号位置,
第 2 号小朋友转到了第 1 号位置,第 3 号小朋友转到了第 2 号位置,所以最后第 0 号位置到
第 3 号位置上的小朋友编号分别是 1,2,3,0。
【数据范围约定】
对于70%的数据,1≤n≤1000,0≤q≤2000。
对于100%的数据,1≤n≤100000,0≤q≤200000。
来源
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000],k,l;
bool c(int a,int b){return a>b;}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){cin>>a[i];}
sort(a,a+n,c);l=a[m-1];
if(a[m]==l){while(1){if(a[m-1]!=l){cout<<a[m-1];return 0;}m--;}}else{cout<<l;return 0;}
return 0;}