比赛 贪心题目练习 评测结果 AAAAAAAAAA
题目名称 超市 最终得分 100
用户昵称 OTTF 运行时间 0.788 s
代码语言 C++ 内存使用 3.54 MiB
提交时间 2025-03-22 14:49:49
显示代码纯文本

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <queue>
#include <utility>

using namespace std;

int n;
pair<int, int> num[11451];

int main () {

    freopen ("supermarket.in", "r", stdin);
    freopen ("supermarket.out", "w", stdout);
    
    while (cin >> n) {
        for (int i = 1; i <= n; i++) {
            cin >> num[i].second >> num[i].first;
        }
        sort (num + 1, num + 1 + n);
        
        priority_queue<int> pq;
        for (int i = 1; i <= n; i++) {
            if (pq.size() < num[i].first) {
                pq.push(-num[i].second);
            }
            else {
                if (-pq.top() < num[i].second) {
                    pq.pop();
                    pq.push(-num[i].second);
                }
            }
        }
        
        int res = 0;
        while (!pq.empty()) {
            res -= pq.top();
            pq.pop();
        }
        
        cout << res << endl;
    }

    return 0;
}