Cod sursa(job #2430179)

Utilizator mariasmmskklns mariasmm Data 13 iunie 2019 02:13:01
Problema Heapuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.74 kb
#include <iostream>

#include <fstream>

#include <queue>

using namespace std;

vector <int>sterse,elemente;

const int inf =(1<<30);

struct compara

{

    bool operator()(int x, int y)

        {

            return x>y;

        }

};

priority_queue <int, vector <int>, compara > q;


int main()

{

    ifstream f("heapuri.in");

    ofstream g("heapuri.out");

    int n;

    f>>n;

    for (int i=1; i<=n; i++)

    {

        int operatie;

        f>>operatie;

        switch (operatie)

        {

        case 1:

            int e;

            f>>e;

            q.push(e);
            elemente.push_back(e);

            break;

        case 2:

            f>>e;
            e=elemente[e-1];
            sterse.push_back(e);
            make_heap(sterse.begin(), sterse.end());
            sort_heap(sterse.begin(), sterse.end());
            break;

        default:
            int ok=1;
            do
            {
                int j=0, ok2=1;
                e=q.top();
                if (!sterse.empty())
                if (e<=sterse[sterse.size()-1])
                while ((e<=sterse[sterse.size()-1])&&(j<sterse.size()))
                {
                    if (e==sterse[j])
                        {
                            ok2=0;
                            break;
                        }
                    j++;
                }
                if (ok2)
                {
                    g<<e<<"\n";
                    ok=1;
                } else
                {
                    ok=0;
                    q.pop();
                }
            }while (ok==0);
            break;

        }

    }

    return 0;

}