某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。
但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。
显然这个m有可能是不存在的,也有可能存在多个m,如果不存在,请你输出-1,如果存在多个,请你输出符合条件的最低的分数线。
数据范围:,
进阶:时间复杂度,空间复杂度
某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。
但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。
输入第一行仅包含三个正整数n,x,y,分别表示参赛的人数和晋级淘汰人数区间。(1<=n<=50000,1<=x,y<=n)
输入第二行包含n个整数,中间用空格隔开,表示从1号选手到n号选手的成绩。(1<=|a_i|<=1000)
输出仅包含一个整数,如果不存在这样的m,则输出-1,否则输出符合条件的最小的值。
6 2 3 1 2 3 4 5 6
3
来个短点的
n, x, y = map(int, input().split()) arr = list(map(int, input().split())) arr.sort() if y * 2 < n: print(-1) else: i = n - y - 1 if i + 1 < x: i = x - 1 print(arr[i])
n,x,y=map(int,input().split()) mark=list(map(int,input().split())) mark.sort() a=[i for i in range(x,y+1)] for i in a: if x<=n-i<=y: print(mark[i-1]) break else: print(-1)
n, x, y = map(int, input().strip().split(' ')) scores = list(map(int, input().strip().split(' '))) scores.sort() # [1,2,3,4,5,6] 满足条件一:人数的一半6/2在【x,y】中,只有这样才能满足淘汰和晋级的人数有左右摆荡的空间 if (n<2*x&nbs***bsp;n>2*y):#设置区间之外的不符合条件 print(-1)#输出-1 else: #满足条件一 for re in scores: a=len([i for i in scores if i<=re]) b=len([j for j in scores if j>re]) if (x<=a<=y and x<=b<=y): print(re) break#当有多个符合的分数时,取最小的