#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl


class MedianFinder:

    def __init__(self):
        
        self.min_heap = []
        self.max_heap = []

        
    def addNum(self, num: int) -> None:
        
        min_heap, max_heap = self.min_heap, self.max_heap
        
        if len(min_heap) < len(max_heap):
            heappush(min_heap, num)
            
        else:
            heappush(max_heap, -num)
            
        if max_heap and min_heap and -max_heap[0] > min_heap[0]:
            
            heappush(max_heap, -heappop(min_heap))
            heappush(min_heap, -heappop(max_heap))
        
        
    def findMedian(self):
        
        min_heap, max_heap = self.min_heap, self.max_heap
        
        if len(min_heap) < len(max_heap):
            return -max_heap[0]
        
        return (min_heap[0] - max_heap[0]) / 2