Pagini recente » Cod sursa (job #1319416) | Cod sursa (job #2913532) | Cod sursa (job #9752) | Cod sursa (job #895703) | Cod sursa (job #430757)
Cod sursa(job #430757)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 200005;
int N, L = 0, NR = 0;
int A[NMAX];
int Heap[NMAX];
int Poz[NMAX];
void adauga(int x)
{
Heap[++L] = x;
for(int i = L; i ; i = i/2)
if(i/2 && A[Heap[i]] < A[Heap[i/2]])
{
swap(Heap[i], Heap[i/2]);
Poz[Heap[i]] = i/2;
Poz[Heap[i/2]] = i;
}
}
void rezolva()
{
int iden, x;
scanf("%d",&N);
for(int i = 1 ; i <= N ; i++)
{
scanf("%d",&iden);
if(iden != 3)
scanf("%d",&x);
if(iden == 1)
{
A[i] = x;
Heap[++L] = i;
Poz[i] = L;
adauga(x);
}
if(iden == 2)
{
}
if(iden == 3)
printf("%d\n",A[Heap[1]]);
}
}
int main()
{
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
rezolva();
return 0;
}