Cod sursa(job #1148587)

Utilizator dumytruKana Banana dumytru Data 20 martie 2014 21:52:02
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <algorithm>
#include <utility>

using namespace std;
set <int> heap;
set<pair<int,int> > v;
set<pair<int,int> >::iterator it,first,last;



int main()
{
    ifstream f("heapuri.in");
    ofstream g("heapuri.out");
    unsigned t;
    int r,i,x=1,n,step,v_size;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>t;
        if(t==3)g<<*heap.begin()<<'\n';
        else if(t==2)
        {
            f>>r;
            first = v.begin();last = v.end();
            int count = distance(first,last);
              while (count>0)
              {
                it = first; step=count/2; advance (it,step);
                if ((*it).first<r) {
                  first=++it;
                  count-=step+1;
                }
                else count=step;
              }

            heap.erase((*it).second);
            v.erase(it);
        }
        else if(t==1)
        {
            f>>r;
            heap.insert(r);
            v.insert(make_pair(x,r));
            x++;
        }
    }
    return 0;
}