class Solution { public: void Insert(int num) { int cnt = heap1.size()+heap2.size(); if (cnt&1) { heap2.push(num); heap1.push(heap2.top()); heap2.pop(); } else { heap1.push(num); heap2.push(heap1.top()); heap1.pop(); } } double GetMedian() { int cnt = heap1.size()+heap2.size(); if (cnt&1) return heap2.top(); else return (heap1.top()+heap2.top())/2.0; } private: priority_queue<int,vector<int>,greater<int> > heap1; priority_queue<int,vector<int>,less<int> > heap2; };