Pagini recente » Cod sursa (job #1370316) | Cod sursa (job #1589748) | Cod sursa (job #1443059) | Cod sursa (job #1384622) | Cod sursa (job #1056782)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long heap[500001],n,nr,x;
void urca(long n,int poz)
{
while(poz>1 && heap[poz]<heap[poz/2])
{
swap(heap[poz],heap[poz/2]);
poz=poz/2;
}
}
void coboara(long 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]);
coboara(n,poz1);
}
}
void heap_c(long &n,long val)
{
heap[++n]=val;
urca(n,n);
}
void delete_min(int n)
{
heap[1]=heap[n--];
coboara(n,1);
}
int main()
{
int i;
f>>nr;
for(i=1;i<=nr;i++)
{
f>>x;
heap_c(n,x);
}
for(i=1;i<=nr;i++)
{
g<<heap[1]<<" ";
delete_min(n);
}
return 0;
}