#include <queue>
class Solution {
public:
#define SCD static_cast<double>
priority_queue<int> maxtop; //maxtop
priority_queue<int, vector<int>, greater<int> > mintop; //小根堆
void Insert(int num) {
maxtop.push(num);
mintop.push( maxtop.top() );
maxtop.pop();
if(maxtop.size() < mintop.size() && !mintop.empty() ){
maxtop.push( mintop.top() );
mintop.pop();
}
}
double GetMedian() {
int maxtop_sz = maxtop.size();
int mintop_sz = mintop.size();
if( mintop_sz == maxtop_sz ){
return SCD( maxtop.top()+mintop.top() ) /2;
}else{
return SCD( maxtop.top() );
}
}
};