随便写写
import java.util.Arrays;
import java.util.Scanner;
public class 纪念品分组 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int w,n;
w=scanner.nextInt();
n=scanner.nextInt();
int[] pi=new int[n];
for (int i = 0; i < n ; i++) {
pi[i]=scanner.nextInt();
}
Arrays.sort(pi);//按照价格排序
int p=0,q=n-1,count=0;
while(p<q){
//如果p指向的纪念品价值+q指向的纪念品<=w纪念品价格之和的上限 分为一组 装完 pq移动
if(pi[p]+pi[q]<=w){
count++;
p++;
q--;
}
//如果p指向的纪念品价值+q指向的纪念品>w的话 对q进行单独分组 q指向当前大的那个纪念品的价值 q往前移动
else{
count++;
q--;
}
}
if(p==q) count++; //说明还未分完组 还有纪念品未进行分组 单独对该纪念品分为一组
System.out.print(count);
}
}