显示原始代码
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
const int MAXN = 1e5;
typedef long long LL;
typedef pair<int, int> PII;
int n;
PII Card[MAXN + 5];
priority_queue<int, vector<int>, greater<int> > Q;
inline void Read(int &Ret) {
char ch;
int flg = 1;
while (ch = getchar(), ch < '0' || ch > '9')
if (ch == '-')
flg = -1;
Ret = ch - '0';
while (ch = getchar(), '0' <= ch && ch < '9') Ret = Ret * 10 + ch - '0';
Ret *= flg;
}
int main() {
Read(n);
for (int i = 1; i <= n; ++i) {
Read(Card[i].first);
Read(Card[i].second);
}
sort(Card + 1, Card + n + 1, greater<PII>());
LL ans = 0;
for (int i = 2; i <= n; ++i) {
if (i & 1 && Q.top() < Card[i].second) {
ans += Card[i].second - Q.top();
Q.pop();
} else if (!(i & 1))
ans += Card[i].second;
Q.push(Card[i].second);
}
printf("%I64d\n", ans);
return 0;
}