ru第4个和第12个点
查看原帖
ru第4个和第12个点
1165449
Februrary楼主2024/5/15 01:12

cmp函数里面的<改为<=就会ru第4个和第12个点,想知道为什么?

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int N;
LL ans;
priority_queue<LL, vector<LL>, greater<LL>> minQ;
struct Node {
    LL de;
    LL p;
} data[100500];
bool cmp(Node a1, Node a2) {
    return a1.de < a2.de;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    cin >> N;
    for(int i = 0; i < N; i++) cin >> data[i].de >> data[i].p;
    sort(data, data + N, cmp);

    for(int i = 0; i < N; i++) {
        int de = data[i].de, p = data[i].p;
        if(de > minQ.size()) {
            minQ.push(p);
            ans += p;
        } 
        else {
            if(minQ.top() < p) {
                ans += p;
                ans -= minQ.top();
                minQ.pop();
                minQ.push(p);
            }
        }
    }

    cout << ans << endl;


    return 0;
}
2024/5/15 01:12
加载中...