Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #218045) | Cod sursa (job #1066730)
#include <iostream>
#include <fstream>
using namespace std;
int heap[500008],n,nr,x;//n
void up_heap(int n,int poz)
{
while(poz>1 && heap[poz]<heap[poz/2])
{
swap(heap[poz],heap[poz/2]);
poz=poz/2;
}
}
void down_heap(int n, int poz)
{
if(poz*2>n) return;
int poz1=poz*2;
if(heap[poz*2+1]<heap[poz*2])
poz1=poz*2+1;
if(heap[poz1]<heap[poz])
{
swap(heap[poz1],heap[poz]);
down_heap(n,poz1);
}
}
void ins_heap(int &n,int val)
{
heap[++n]=val;
up_heap(n,n);
}
void del_heap(int &n)
{
heap[1]=heap[n--];
down_heap(n,1);
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
int i;
in>>nr;
for(i=1;i<=nr;i++)
{
in>>x;
ins_heap(n,x);
}
for(i=1;i<=nr;i++)
{
out<<heap[1]<<" ";
del_heap(n);
}
in.close();
out.close();
return 0;
}