Astral-23 / competitive-programing

競プロ用のライブラリ。 Utility/template.hpp を include しないと動かない物が多数。
Creative Commons Zero v1.0 Universal
0 stars 0 forks source link

消せるウンタラカンタラ #23

Open Astral-23 opened 1 month ago

Astral-23 commented 1 month ago
template<class pque, class S>struct deletable_priority_queue {
    pque P;
    pque Q;

    void balance() {
        while(P.empty() == false && Q.empty() == false && P.top() == Q.top()) {
            P.pop();Q.pop();
        }
    }

    void push(S x) {
        P.push(x);
    }

    void pop() {
        balance();
        P.pop();
    }

    void del(S x) {
        if(P.top() == x) pop();
        else Q.push(x);
    }

    S top() {
        balance();
        return P.top();
    }

    ll size() {
        return P.size() - Q.size();
    }

    bool empty() {
        return size() == 0;
    }

};