⭐️ 우선순위 큐 사용
틀렸다고 뜬다ㅠㅠ 예외사항 있을 수도?
원리는 비슷하나 진짜 왜 틀렸는지 모르겠지만 다른 방법으로 접근할 수 있었던 문제라 기록함
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
struct value {
int m;
int v;
};
bool cmp(value a, value b) {
return a.m < b.m;
}
int main() {
int n,k;
long long ans=0;
vector<int> bag;
vector<value> jwerly;
priority_queue<int> pq;
cin >> n >> k;
while(n--) {
int m,v;
cin >> m >> v;
jwerly.push_back({m,v});
}
while(k--) {
int b;
cin >> b;
bag.push_back(b);
}
sort(bag.begin(), bag.end());
sort(jwerly.begin(), jwerly.end(), cmp);
int idx=0;
for (int i=0; i<bag.size(); i++) {
while (idx<jwerly.size() && jwerly[idx].m<=bag[i]) {
pq.push(jwerly[idx++].v);
}
if (!pq.empty()) {
ans+=pq.top();
pq.pop();
}
}
cout << ans;
}