Pagini recente » Cod sursa (job #1739523) | Cod sursa (job #2539430) | Cod sursa (job #1216750) | Cod sursa (job #1241265) | Cod sursa (job #1148587)
#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;
}