Pagini recente » Cod sursa (job #473577) | Cod sursa (job #1325102) | Cod sursa (job #1094427) | Cod sursa (job #3218512) | Cod sursa (job #1791577)
#include <stdio.h>
int heap[200001], v[200001];
inline void heapify(int n){
int aux, i;
for(i=n-1;i>1;i--)
if(heap[i]<heap[i/2]){
aux=heap[i];
heap[i]=heap[i/2];
heap[i/2]=aux;
}
}
int main()
{
int op, last, poz, i, c, x, j;
FILE *fi=fopen("heapuri.in", "r"), *fo=fopen("heapuri.out", "w");
fscanf(fi, "%d", &op);
last=1;
poz=0;
for(j=0;j<op;j++){
fscanf(fi, "%d", &c);
if(c==3)
fprintf(fo, "%d\n", heap[1]);
else{
fscanf(fi, "%d", &x);
if(c==1){
v[++poz]=x;
heap[last++]=v[poz];
}
else{
for(i=1;heap[i]!=v[x];i++);
heap[i]=heap[--last];
}
heapify(last);
}
}
fclose(fi);
fclose(fo);
return 0;
}