元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
输入格式
共 n+2n+2 行:
第一行包括一个整数 ww,为每组纪念品价格之和的上限。
第二行为一个整数 nn,表示购来的纪念品的总件数 GG。
第 3\sim n+23∼n+2 行每行包含一个正整数 P_iP
i
表示所对应纪念品的价格。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int w = scanner.nextInt();
int n = scanner.nextInt();
int[] values = new int[n];
int count = 0;
int start= n-1;
for(int i = 0; i<n; i++) {
values[i] = scanner.nextInt();
}
Arrays.sort(values);
for (int i = 0; i < n; i++) {
for (int j = start; j >= i; j--) {
if (values[j] + values[i] <= w || i == j ){
count++;
start= j-1;
break;
}
count++;
}
}
System.out.println(count);
}
}