192日-プログラマ


問題の説明
デュアル・ユーティリティ・プリアンブル・キューとは、次の演算が可能なデータ構造です.
めいれいじゅしんとう
I数値キューに指定した数値を挿入します.
D 1キューから最値を削除します.
D-1キューから最大値を削除します.
パラメータとして2つの優先順位キューで実行する演算操作を指定した場合、すべての演算を処理した後、キューが空の場合[0,0]空でない場合、「最値、最上昇値」を返すソルバを実装します.
せいげんじょうけん
operationsは、長さが1または1000000未満の文字列配列です.
operationsの要素は、キューが実行する演算を表します.
要素はコマンドデータ形式で与えられます.最大値/最大値を削除する操作で複数の最大値/最大値がある場合は、1つだけ削除します.
空のキューからデータを削除する必要がある場合は、この操作は無視されます.
I/O例
operations return
["I 16","D 1"][0,0]
["I 7","I 5","I -5","D -1"][7,5]
I/O例説明
16を挿入すると、最大値が削除されます.[0,0]を返します.空ですから.
7、5、および-5を挿入して、最大値を削除します.最大値7、最小値5を返します.
import heapq
def solution(operations):
    h = []
    for item in operations:
        if item.split(' ')[0] == 'I':
            heapq.heappush(h, int(item.split(' ')[1]))
        else:
            if h:
                if item.split(' ')[1] == '1':
                    h.pop()
                else:
                    heapq.heappop(h)
    h.sort()
    if not h:
        return [0,0]
    else:
        return [h.pop(), h.pop(0)]