Pagini recente » Cod sursa (job #807921) | Cod sursa (job #1470624) | Cod sursa (job #2491744) | Cod sursa (job #2859250) | Cod sursa (job #1265807)
#include <cstdio>
using namespace std;
int n,i,l,c,nr,h[1000];
int left_son(int k){return 2*k;}
int right_son(int k){return 2*k+1;}
int father(int k){return k/2;}
void sift(int h[],int k,int n)
{
int son,ax;
do
{
son=0;
if(left_son(k)<=n)
{
son=left_son(k);
if(right_son(k)<=n&&h[right_son(k)]>h[left_son(k)])
son=right_son(k);
if(h[son]<=h[k])
son=0;
}
if(son)
{
ax=h[k];
h[k]=h[son];
h[son]=ax;
k=son;
}
}while(son);
}
void percolate(int h[],int n,int k)
{
int key=h[k];
while((k>1)&&(key>h[father(k)]))
{
h[k]=h[father(k)];
k=father(k);
}
h[k]=key;
}
void cut(int h[], int& N, int K)
{
h[K]=h[N];
--N;
if ((K>1)&&(h[K]>h[father(K)]))
percolate(h, N, K);
else
sift(h, N, K);
}
void insert(int h[],int& N,int key)
{
h[++N]=key;
percolate(h, N, N);
}
void build_heap(int H[], int N) {
for (int i = N / 2; i > 0; --i) {
sift(H, N, i);
}
}
int main()
{
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&c);
if(c==1)
{
scanf("%d",&nr);
insert(h,l,nr);
}
}
return 0;
}