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;
}