#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main(void)
{
int m,n;
cin>>m>>n;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,cmp);
int j=n-1,sum=0,i=0;
while(i<=j)
{
if(i==j)
{
i++;
j--;
sum++;
}
else if(a[i]+a[j]<=m)
{
i++;
j--;
sum++;
}
else if(a[i]+a[j]>m)
{
i++;
sum++;
}
}
cout<<sum;
}
```这个是AC代码
```cpp
``` #include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main(void)
{
int m;
cin>>m;
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,cmp);
int j=n-1,sum=0,x=0,y=0;
for(int i=0;i<n;i++)
{
if(i==j)
{
sum++;
break;
}
if(a[i]+a[j]<=m)
{
sum++;
j--;
}
else if(a[i]+a[j]>m)
{
sum++;
}
}
cout<<sum;
}
这个是30分代码(也能过样本6)
混子不是很清楚while和for的差别,感觉思路都一样,不知道为什么for过不了