class Solution {
private:
priority_queue<int, vector<int>, less<int>> max_pq; // 大顶堆
priority_queue<int, vector<int>, greater<int>> min_pq; // 小顶堆
public:
void Insert(int num) {
if(max_pq.empty()){
max_pq.push(num);
return;
}
if(max_pq.top() < num){
min_pq.push(num);
}
else{
max_pq.push(num);
}
if(max_pq.size() > min_pq.size()+1){
while(max_pq.size() > min_pq.size()+1){
int val = max_pq.top();
max_pq.pop();
min_pq.push(val);
}
}
else if (max_pq.size() < min_pq.size()) {
while(max_pq.size() < min_pq.size()){
int val = min_pq.top();
min_pq.pop();
max_pq.push(val);
}
}
}
double GetMedian() {
if((max_pq.si***_pq.size()) % 2 == 0){
double a = max_pq.top();
double b = min_pq.top();
return (a+b)/2;
}
double a = max_pq.top();
return a;
}
};