题解在此
#include <bits/stdc++.h>
const int N=1e6+5;
using namespace std;
typedef long long ll;
int a[N];
int main()
{
ll x,n,ans=0;
cin>>x>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(a[i]==0)
continue;
int m=x-a[i];
for(int j=n;j>=i;j--)
{
if(a[j]<=m&&a[j]!=0)
{
ans++;
a[i]=0;
a[j]=0;
break;
}
}
}
for(int i=1;i<=n;i++)
{
if(a[i]!=0)
{
ans++;
}
}
cout<<ans;
return 0;
}
四行代码
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;typedef long long ll;int a[N];
int main(){ll x,n,ans=0;cin>>x>>n;for(int i=1; i<=n; i++){cin>>a[i];}sort(a+1,a+n+1);for(int i=1;i<=n;i++){if(a[i]==0){continue;}int m=x-a[i];for(int j=n;j>=i;j--){if(a[j]<=m&&a[j]!=0){ans++;a[i]=0;a[j]=0;break;}}}for(int i=1;i<=n;i++){if(a[i]!=0){ans++;}}cout<<ans;return 0;}