淘汰分数
链接:https://www.nowcoder.com/questionTerminal/9c4a4e879b4f49939dfaebea8948f976?toCommentId=11590619
来源:牛客网
某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。
但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。
显然这个m有可能是不存在的,也有可能存在多个m,如果不存在,请你输出-1,如果存在多个,请你输出符合条件的最低的分数线。
在不考虑有重复分数的情况下:
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
int n = Integer.parseInt(s[0]);
int x = Integer.parseInt(s[1]);
int y = Integer.parseInt(s[2]);
int[] arr = new int[n];
s = br.readLine().split(" ");
for(int i = 0;i < arr.length;i++){
arr[i] = Integer.parseInt(s[i]);
}
Arrays.sort(arr);
int score = -1;
//遍历没过的人数
for(int i = 1;i < arr.length;i++){
//过的人数
int ok = n - i;
if(i >= x && ok <= y){
//过和不过的人都在范围内,记录分数,因为要求最低的分数线,直接结束
score = arr[i - 1];
break;
}
}
System.out.println(score);
}
}