Cod sursa(job #3142095)

Utilizator UengineDavid Enachescu Uengine Data 19 iulie 2023 10:39:18
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream cin("heapuri.in");
ofstream cout("heapuri.out");

struct elem{
    int val;
    bool operator <(const elem &other)const{
        return val > other.val;
    }
};

priority_queue <elem> pq, pq_sterse;
vector <int> v(200005);

int main() {
    int n, k = 1;
    cin >> n;
    for(int i = 1; i <= n; i++){
        int c;
        cin >> c;
        if(c == 1)
        {
            elem x;
            cin >> x.val;
            pq.push(x);
            v[k++] = x.val;
        }
        else if(c == 2)
        {
            int p;
            cin >> p;
            elem x;
            x.val = v[p];
            pq_sterse.push(x);
            while(pq.top().val == pq_sterse.top().val and !pq.empty()){
                pq.pop();
                pq_sterse.pop();
            }
        }
        else
        {
            cout << pq.top().val << '\n';
        }
    }
    return 0;
}