//与楼主两点不同: 1.multimap改为multiset //2.存储就餐人数、消费额时用vector,v[0]是消费额,v[1]是消费人数 //之所以消费额放前面就是为了排序时以消费额为准,这样不再需要自定义结构体和比较函数 //昨晚没想起来用multiset,更没想起来用其成员函数lower_bound,只是从头到尾搜索,也没用long long,结果50% #include<iostream> #include<vector> #include<algorithm> #include<set> using namespace std; int main() { int n , m, x, y; cin >> n >> m; multiset<int> table; for(int i = 0; i < n; ++i) { cin >> x; table.insert(x); } vector<vector<int> > guest; for(int i = 0; i < m; ++i) { cin >> x >> y; guest.push_back({y, x}); //x:人数 y:消费额,y放vector的前面,排序时以消费额为准 } sort(guest.begin(),guest.end(), greater<vector<int> >()); long long maxValue = 0; for(int i = 0; i < m && !table.empty(); ++i) { auto it = table.lower_bound(guest[i][1]); //guest[i][1]就餐人数 if(it != table.end()) { maxValue += guest[i][0]; //guest[i][0]消费额 table.erase(it); } } cout << maxValue <<endl; return 0; }
点赞 评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务