Pagini recente » Cod sursa (job #2290374) | Cod sursa (job #712216) | Cod sursa (job #1348050) | Cod sursa (job #1469035) | Cod sursa (job #3247120)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <climits>
using namespace std;
int main()
{
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int n,m,x;
f>>n;
vector<int>v(n);
vector<int>v2(n);
for (int z=1; z<=n; z++) {
f>>m;
if(m==1){
f>>x;
v[z]=x;v2[z]=x;
int k=z;
while (v[k]<v[k-1]&&k>1) {swap (v[k],v[k-1]);k--;}
m=0;
}
if(m==2){
z--;n--;
f>>x;int y=v2[x];
int k=z;
while (y<v[k]) k=k/2;
//if (y-v[k]>v[2*k]-y) k*=2;
//while (y<v[k]) k=k-1;
while (y>v[k]||v[k]==INT_MAX) k=k+1;
//for (int i=k;i<z;i++) swap (v[i],v[i+1]);
//cout<<k<<" "<<v[k]<<endl;
v[k]=INT_MAX;
//z--;n--;
m=0;
}
if(m==3){
int i=1;
while (v[i]==INT_MAX) i++;
g<<v[i]<<endl;
z--;n--;
m-0;
}
/*
cout<<endl;
for(int i=1; i<=z; i++)cout<<v[i]<<" ";
cout<<endl;
*/
}
return 0;
}