#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() ); } } };