题意理解
将纪念品按照价格排序,从左到右是由低到高的顺序。然后根据价格低的进行匹配,从右往左找价格最高的可以与价格低的组成一组的纪念品。
代码
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[] p = new int[n];
for(int i = 0; i < n; i++) {
p[i] = scanner.nextInt();
}
scanner.close();
Arrays.sort(p);
int left = 0;
int right = n - 1;
int missNum = 0;
int groupNum = 0;
while(left < right) {
while(p[left] + p[right] > w) {
right--;
missNum++;
}
if(left != right) {
groupNum++;
left++;
right--;
}
if(left == right) {
missNum++;
}
}
System.out.println(groupNum + missNum);
}
}