题目:
考察内容:
if while;break; sort();for
代码:
"""
analyze:
团队:1-2
1个人只能参加一个团队input:
总人数 int
每个人能力,list
最低能力值 intoutput
最多可以派出团队的数量, integ:
5
3 1 5 7 9
8310
4 5 6 7 9 3 3 4 12 6
73+3way:
排序,倒叙;优先考虑最大的个人;然后考虑,其次最大和最小的结合,不满足,继续考虑其次最小的
最大数量为:最大个人数量+(总人数-最大个人数量)/2"""
n = int(input())
ability_list = list(map(int, input().split()))
min_ability = int(input())
# 倒叙排序
ability_list.sort(reverse=True)
team_num = 0
right = -1
max_team_num = 0
# 循环
for ability in range(len(ability_list)):# 优先一个人if ability_list[ability] >= min_ability:team_num += 1max_team_num = int((n - team_num) / 2) + team_numelse:# 至少两个人,可增加的最多数量位(N-team_num)/2temp = ability_list[ability]while temp < min_ability:right -= 1temp = ability_list[ability] + ability_list[right]if temp >= min_ability:if team_num >= max_team_num:breakelse:team_num += 1breakprint(team_num)