题目描述
部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入描述
第—行两个数字m、n,分别代表自行车限重,部门总人数。
第二行,n个数字,代表每个人的体重,体重都小于等于自行车限重m。
0<m<=200
0<n<=1000000
输出描述
最小需要的双人自行车数量。
用例
输入
343221
输出
3
个人解法
不保证通过率
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
*
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] init = br.readLine().split(" ");
int m = Integer.parseInt(init[0]), count = Integer.parseInt(init[1]);
int[] peoples = new int[count];
String[] in2 = br.readLine().split(" ");
for (int i = 0; i < count; i++) {
peoples[i] = Integer.parseInt(in2[i]);
}
Arrays.sort(peoples);
int head = 0, tail = count - 1,result = 0;
for (int i = tail; i >=0; i--) {
if (head>i) {break;}
if (head==i){result++;break;}
if (peoples[i]+peoples[head]<=m){
head++;
}
result++;
}
System.out.println(result);
}
}