import java.util.*;


public class Solution {

    private Queue<Integer> oddNumber = new PriorityQueue<>((a,b) -> b-a);//降序排序,栈顶是小值的最大值
    private Queue<Integer> evenNumber = new PriorityQueue<>();//升序排序,栈顶是大值的最小值
    private int count = 0;

    public void Insert(Integer num) {
        count++;
        int mod = count % 2;
        if(mod == 0){//偶数
            if(!oddNumber.isEmpty() && num < oddNumber.peek()){
                int temp = oddNumber.poll();
                oddNumber.offer(num);
                num = temp;
            }
            evenNumber.offer(num);
        }else{//奇数
            if(!evenNumber.isEmpty() && num > evenNumber.peek()){
                int temp = evenNumber.poll();
                evenNumber.offer(num);
                num = temp;
            }
            oddNumber.offer(num);
        }
    }

    public Double GetMedian() {
        
        int mod = count % 2;
        double target = 0.0;
        if(mod == 0){
            target = ((double)oddNumber.peek() + (double)evenNumber.peek())/2.0;
        }else{
            target = (double)oddNumber.peek();
        }

        return target;
    }


}