贪心算法基本模型,将价格从大到小排序,判断最大的价格能不能与最小的价格放在一起,如果可以,将最小的价格取出,即n--,反之,什么都不做,所以最后答案就是这个循环的循环次数。

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int i,sum,n,count=0;
    cin>>sum>>n;
    int a[n];
    for (i=0;i<n;i++)
    cin>>a[i];
    sort(a,a+n,cmp);
    for (i=0;i<n;)
    {
        if (a[i]+a[n-1]<=sum)
        {
            i++;
            n--;
            count++;
        }
        else
        {
            i++;
            count++;
        }
    }
    cout<<count;
}