https://www.acmicpc.net/problem/13904
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int main() {
int N; cin>>N;
vector<pair<int, int>> works(N);
for(auto &work:works){
cin>>work.first>>work.second;
}
sort(works.begin(), works.end());
priority_queue<int, vector<int>, greater<>> pq;
int ret=0;
for(auto &work:works) {
if(pq.empty()) {
pq.push(work.second);
ret+=work.second;
}
else {
if(pq.size()<work.first) {
pq.push(work.second);
ret+=work.second;
}
else if(pq.top()<work.second) {
ret-=pq.top();
pq.pop();
pq.push(work.second);
ret+=work.second;
}
}
}
cout<<ret;
//std::cout << "Hello, World!" << std::endl;
return 0;
}