#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <functional>
using namespace std;
class MedianFinder {
public:
/** initialize your data structure here. */
MedianFinder() {
}
priority_queue<int, vector<int>, greater<int>> q1;
priority_queue<int, vector<int>, less<int>> q2;
void addNum(int num) {
if (q1.size() == 0)
{
q1.push(num);
return;
}
if (q2.size() == 0&&!q1.empty())
{
if (num < q1.top())
q2.push(num);
else
{
q2.push(q1.top());
q1.pop();
q1.push(num);
}
return;
}
if (q1.size()==q2.size())
{
if (num > q2.top())
{
q1.push(num);
}
else
{
q1.push(q2.top());
q2.pop();
q2.push(num);
}
}
else
{
if (num > q1.top())
{
q2.push(q1.top());
q1.pop();
q1.push(num);
}
else
{
q2.push