双指针+贪心
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1e5 + 5;
int a[maxn];
bool cmp(int x, int y) {
return x < y;
}
int main() {
int w, n;
cin >> w >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
sort(a + 1, a + 1 + n, cmp);
int cnt = 0;
int l = 1, r = n;
while (l <= r) {
if (a[l] + a[r] <= w) {
l++, r--;
cnt++;
}
else {
r--;
cnt++;
}
}
cout << cnt << endl;
return 0;
}