Cod sursa(job #2429878)

Utilizator mariasmmskklns mariasmm Data 11 iunie 2019 17:51:08
Problema Heapuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
vector < int > v;
vector < int > q;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
void inserare(int p)
{
    q.push_back(p);
    v.push_back(p);
    make_heap(q.begin(), q.end());
    sort_heap(q.begin(), q.end());
}

void minim()
{
    g<<q[0]<<"\n";
}

void stergere(int p)
{
    int nr=v[p-1];
    int i=0,j=q.size()-1;
    while (i<j)
    {
        if (nr>q[(i+j)/2])
            i=(i+j+1)/2; else
            j=(i+j)/2;
    }
    q.erase(q.begin()+i);
}

int main()
{
    int n;
    f>>n;
    for (int i=1; i<=n; i++)
    {
        int operatie;
        f>>operatie;
        switch (operatie)
        {
        case 1:
            int p;
            f>>p;
            inserare(p);
            break;
        case 2:
            f>>p;
            stergere(p);
            break;
        default:
            minim();
            break;
        }
    }
}