题目描述:
用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或2人组成,且1个人只能参加1个团队,请计算出最多可以派出多少支符合要求的团队?
输入描述:
第一行数组代表总人数,范围[1,500000]
第二行数组代表每个人的能力,每个元素的取值范围[1, 500000],数组的大小范围[1,500000]
第三行数值为团队要求的最低能力值,范围[1, 500000]
输出描述:
最多可以派出的团队数量
示例1
输入:
5 3 1 5 7 9 8
输出:
3
说明:
3,5组成一队,1,7组成一队,9自己一个队,故输出3
代码
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();//总人数
List<Integer> list = new ArrayList<Integer>();//每个人的能力
for (int i = 0; i < n; i++) {
list.add(in.nextInt());
}
int minN=in.nextInt();//最低能力
Collections.sort(list);
int num=0;//组队数
for (int i = 0; i < list.size(); i++) {
if (list.get(i) >= minN) {
num++;
continue;
}
for (int j = i+1; j < list.size(); j++) {
if (list.get(j) >= minN) {
break;
}
if (list.get(i) + list.get(j)>=minN) {
num++;
list.set(j,0);
break;
}
}
}
System.out.println(num);
}
}