题解 | #餐馆#

餐馆

http://www.nowcoder.com/practice/d2cced737eb54a3aa550f53bb3cc19d0

使用的贪心策略,优先将消费最大,占用座位较少的消费者排号就座。

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>

using namespace std;

int main(){
    int64_t n, m;
    while(cin >> n >> m){
        vector<int64_t> table_max_nums;
        while(n--){
            int64_t table_num;
            cin >> table_num;
            table_max_nums.push_back(table_num);
            
        }
        sort(table_max_nums.begin(),table_max_nums.end());
        
        vector<pair<int64_t, int64_t>> customs;
        while(m--){
            int64_t b, c;
            cin >> b >> c;
            if (b <= table_max_nums.back()){
                customs.push_back(make_pair(b, c));
            }
        }
        sort(customs.begin(),customs.end(),
             [](pair<int64_t, int64_t> p1, pair<int64_t, int64_t> p2){return p1.second > p2.second;});
        
        int64_t sum_money = 0;
        for(auto custom : customs) {
            for(auto iter = table_max_nums.begin(); iter != table_max_nums.end(); ++iter){
                if(custom.first <= *iter){
                    sum_money += custom.second;
                    table_max_nums.erase(iter);
                    break;
                }
            }
        }
        cout << sum_money <<  endl;
    }
    return 0;
    
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务