2
bool operator()(pair<int, string> p1, pair<int, string> p2) {3
if (p1.first == p2.first) return p1.second < p2.second;4
return p1.first > p2.first;9
bool operator()(pair<int, string> p1, pair<int, string> p2) {10
if (p1.first == p2.first) return p1.second > p2.second;11
return p1.first < p2.first;17
priority_queue<pair<int, string>, vector<pair<int, string>>, compareMin> min_heap;18
priority_queue<pair<int, string>, vector<pair<int, string>>, compareMax> max_heap;22
void add(string name, int score) {23
if (!min_heap.empty() && (min_heap.top().first < score ||24
(min_heap.top().first == score && min_heap.top().second > name))) {25
pair<int, string> t = min_heap.top();27
min_heap.push({score, name});30
max_heap.push({score, name});35
pair<int, string> s = max_heap.top();