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
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:10
码农索隆:成年人最直白的答复:已读不回
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务