比赛 数据结构应用练习1 评测结果 AAAAAAAAAA
题目名称 超市 最终得分 100
用户昵称 ┭┮﹏┭┮ 运行时间 1.115 s
代码语言 C++ 内存使用 5.91 MiB
提交时间 2023-07-28 11:03:23
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
int n,ans;
struct made{
    int p,d;
}a[N];
bool cmp(made x,made y){
    if(x.d == y.d)
        return x.p > y.p;
    return x.d < y.d;
}
int main(){
    freopen("supermarket.in","r",stdin);
    freopen("supermarket.out","w",stdout);
    while(cin>>n){
        ans = 0;
        memset(a,0,sizeof(a));
        priority_queue<int,vector<int>,greater<int> >hp;
        for(int i = 1;i <= n;i++){
            scanf("%d%d",&a[i].p,&a[i].d);
        }
        sort(a+1,a+1+n,cmp);
        for(int i = 1;i <= n;i++){
            if(a[i].d > hp.size()){
                hp.push(a[i].p);
            }
            else if(a[i].d == hp.size() && a[i].p > hp.top()){
                hp.pop();hp.push(a[i].p);
            }
        }
        while(hp.size()){
            ans += hp.top();
            hp.pop();
        }
        printf("%d\n",ans);
    }
    
    return 0;
}