Pagini recente » Rating Anatol Siscan (siscan) | Cod sursa (job #2719953) | Cod sursa (job #2301839) | Cod sursa (job #2601713) | Cod sursa (job #2757929)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n,nh;
int v[500001];
void urca(int p)
{
while(p>1 && v[p]>v[p/2]){
swap(v[p],v[p/2]);
p/=2;
}
}
void adauga(int val)
{
v[++nh]=val;
urca(nh);
}
void coboara(int p)
{
int fs,fd,bun;
fs=2*p;
fd=2*p+1;
bun=p;
if(fs<=nh && v[fs]>v[bun])
bun=fs;
if(fd<=nh && v[fd]>v[bun])
bun=fd;
if(bun!=p){
swap(v[bun],v[p]);
coboara(bun);
}
}
int main()
{
in>>n;
nh=0;
for(int i=1;i<=n;i++){
int aux;
in>>aux;
adauga(aux);
}
for(int i=n;i>=1;i--){
swap(v[1],v[i]);
nh--;
coboara(1);
}
for(int i=1;i<=n;i++)
out<<v[i]<<' ';
return 0;
}