def getMaxMusle(distances, scores):
    if(len(distances) == 0):
        return []
    elif(len(distances) == 1):
        return [distances[0] * 2 + scores[0]]

    import heapq as hq
    n = len(distances)
    rights = [(- distances[i] * 2 - scores[i], i) for i in range(n)]
    hq.heapify(rights)
    lefts, res, curr_i, curr_score = [], [], -1, 0

    for _ in range(n):
        if(not rights or 
            (lefts and lefts[0][0] <= rights[0][0] + 2 * distances[curr_i])):
            curr_score -= hq.heappop(lefts)[0]
            res.append(curr_score)
        else:
            curr_score += (- rights[0][0] - 2 * 
                (distances[curr_i] if(curr_i >= 0) else 0))
            curr_i = max(curr_i, rights[0][1])
            hq.heappop(rights)
            res.append(curr_score)

            while(rights and rights[0][1] < curr_i):
                temp = hq.heappop(rights)
                hq.heappush(lefts, (temp[0] + 2 * distances[temp[1]], temp[1]))

    return res
AC 100