Pagini recente » Cod sursa (job #3302536) | Borderou de evaluare (job #2429860) | Autentificare | Cod sursa (job #1615884) | Cod sursa (job #2429878)
#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;
}
}
}