Pagini recente » Cod sursa (job #36616) | Cod sursa (job #1273815) | Cod sursa (job #1458451) | Monitorul de evaluare | Cod sursa (job #403233)
Cod sursa(job #403233)
#include<fstream>
#define nmax 200001
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int heap[nmax],n;
int crono[nmax];
int aux[nmax],p;
void insert_heap(int x)
{int fiu=++n; //fiu este nodul n+1 si incrementez n totodata
int tata=n/2;
while(heap[tata]>x)
//valoarea lui x trebuie promovata
{heap[fiu]=heap[tata];
crono[fiu]=crono[tata];
fiu=tata;
tata=fiu/2;
}
heap[fiu]=x;
crono[fiu]=n;
}
int main()
{int i,j,m,x,operatie,v;
fin>>m;
for(i=1;i<=m;i++)
{fin>>operatie;
switch(operatie)
{case 1 : fin>>x;
insert_heap(x);
break;
case 2 : fin>>x;
v=n;
n=0;
p=0;
for(j=1;j<=v;j++)
if(crono[j]!=x)
{p++;
aux[p]=heap[j];
}
for(j=1;j<=p;j++)
insert_heap(aux[j]);
break;
case 3 : fout<<heap[1]<<'\n';
}
}
fin.close();
fout.close();
return 0;
}