我把题目想复杂了,分成了很多种情况讨论,实际非常简单,直接从头到尾扫描,判断是否满足条件即可。
题解:
n,a,b= map(int,input().split())
nums=list(map(int,input().split()))
nums.sort()
left=a # left用来记录被淘汰的人数
i=left-1
m=-1
while left<=b:
right=n-left # right用来记录被录取的人数
if left>=a and left<=b and right>=a and right<=b:
m=nums[i]
break
i=i+1
left=left+1
print(m)
感觉题解不满足题意,当分数全部都是相同的值,比如输入
6 2 3
1 1 1 1 1 1
的时候,代码输出m=1,按照题目要求分数大于m的选手才能晋级,这里分数并没有大于1的,所晋级0人,不晋级6人,不合题意,不知道哪里理解错了,恳请指点。