题意:中文题面,不需要解释了。
思路:将纪念品件数从小到大排序,小的和大的一组,如果超过给定的上限,则大的单独一组。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e4+10;
int a[maxn];
int main(void){
int w;
cin>>w;
int n;
cin>>n;
for(int i = 1; i <= n; i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int l = 1;
int r = n;
int cnt = 0;
while(l<=r){
if((a[l]+a[r])<=w){
cnt++;
l++;
r--;
}
else{
r--;
cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
京公网安备 11010502036488号