#include<bits/stdc++.h>
using namespace std;
int w,n,p[30001],cnt;
int main()
{
cin>>w>>n;
for(int i=1;i<=n;i++) cin>>p[i];
sort(p,p+n);
int x=n;
for(int i=1;i<=x;i++)
{
if(p[i]+p[x]<=w) x--,cnt++;
else i--,x--,cnt++;
}
cout<<cnt<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int W,ans=0;
int n,a[30001];
int l,r,i;
int main()
{
scanf("%d%d",&W,&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
l=1; r=n;
while(l<=r)//一定要有等号。
{
if(a[l]+a[r]<=W) //一定要有等号。
l++,r--,ans++;
else
r--,ans++; //贪心过程
}
printf("%d",ans);
return 0;
}
想问一下是哪里出了问题,看了一下感觉和题解一样为什么会错