此题应用贪心和二分算法 此题分几步做
 1.因为贵的房子不一定舒适所以应先排序舒适度(从大到小)
 2.拥有金币数量的人排序(从穷到富) 
3.想让舒适度最大应该让 买的起最大舒适度房子的人(前提条件)中最少金币持有者(能买的起房子中最穷的)先购买(用二分找);--原因:富的人选择多,防止有人买不起。
 4.(起始结果设为0 ans=0;)将购买完的人从数组中删去,将买的人的舒适度结果加和;
5.输出结果;
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int n,m;
    cin>>n>>m;
    vector<ll>coin(n);
    for(int i=0;i<n;i++)
    {
        cin>>coin[i];
    }
    sort(coin.begin(),coin.end());
    vector<pair<ll,ll>>house(m);
    for(int i=0;i<m;i++)
    {
        cin>>house[i].first>>house[i].second;
    }
    ll ans=0;
    sort(house.rbegin(),house.rend());
    for(int i=0;i<m;i++)
    {
        ll a=house[i].first;
        ll b=house[i].second;
        ll l=0;ll r=n-1;
        while(l<=r)
        {
            ll mid=(l+r)/2;
            if(coin[mid]>=b)
                r=mid-1;
            else
                l=mid+1;
        }
        if(l<n)
        {
            ans+=a;
        coin.erase(coin.begin()+l);
        n--;
        }
    }
    cout<<ans<<endl;
    return 0;
}