// //  main.cpp //  DiDitest001 // //  Created by Rouen on 16/9/6. //  Copyright © 2016 年 Rouen. All rights reserved. // #include <iostream> #include <vector> #include <queue> #include <stack> #include <map> #include <algorithm> using namespace std ; class comppair{ public :     int operator ()( pair < int , int > a, pair < int , int > b) {         if (a. second != b. second )             return a. second > b. second ;         else             return a. first > b. first ;     } }; long long helper( int n, int m, multiset < int >& arr, vector < pair < int , int >> &cost) {     long long res = 0 ;     int resid = m;     sort (cost. begin (),cost. end (), comppair ());     for ( int k = 0 ;k <=m;++k) {         auto ii = arr. lower_bound (cost[ k ]. first );         if (ii != arr. end ()) {             res += cost[ k ]. second ;             arr. erase (ii);             --resid;         }         if (resid == 0 ) break ;     }          return res; } int main( int argc, const char * argv[]) {     // insert code here...     //std::cout << "Hello, World!\n";     int n,m;     multiset < int > arr;     vector < pair < int , int >> cost;     int tmp1, tmp2,tmp3;     while ( cin >> n >> m) {         arr. clear ();         cost. resize (m);         for ( int i = 0 ;i < n;++i) {             scanf ( "%d" ,&tmp3);             arr. insert (tmp3);         }         for ( int i = 0 ;i < m;++i) {             scanf ( "%d" ,&tmp1);             scanf ( "%d" ,&tmp2);             //scanf("%d %d",&tmp1,&tmp2);             cost[ i ] = {tmp1,tmp2};         }         printf ( "%lld\n" , helper (n, m, arr, cost));     }     return 0 ; }
点赞 评论

相关推荐

喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
牛客网
牛客企业服务