Cod sursa(job #2224761)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 24 iulie 2018 23:48:23
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
//    ifstream cin("data.txt");
    ifstream cin("heapuri.in");
    ofstream cout("heapuri.out");

    ios_base::sync_with_stdio(false);

    int N;
    cin >> N;

    vector<int> v;
    multiset<int> mset;
    priority_queue<int, vector<int>, greater<int>> minHeap;

    while (N--){
        int t;
        cin >> t;

        if (t == 1){
            int x;
            cin >> x;
            v.push_back(x);
            minHeap.push(x);
        }
        else if (t == 2){
            int x;
            cin >> x;
            mset.insert(v[x - 1]);
        }
        else{
            while (minHeap.size() > 0){
                int x = minHeap.top();

                if (mset.find(x) != mset.end()){
                    mset.erase(mset.find(x));
                    minHeap.pop();
                    continue;
                }

                cout << x << "\n";
                break;
            }
        }
    }

    return 0;
}