Pagini recente » Cod sursa (job #851237) | Cod sursa (job #2208698) | Cod sursa (job #982948) | Cod sursa (job #1512574) | Cod sursa (job #3123982)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int N = 5e5;
int n, h[N + 1], nh;
void urca(int p)
{
while(p > 1 && h[p] > h[p / 2])
{
swap(h[p], h[p / 2]);
p /= 2;
}
}
void adauga(int val)
{
h[++nh] = val;
urca(nh);
}
void coboara(int p)
{
int fs = 2 * p, fd = 2 * p + 1, bun = p;
if(fs <= nh && h[fs] > h[bun])
bun = fs;
if(fd <= nh && h[fd] > h[bun])
bun = fd;
if(bun != p)
{
swap(h[p], h[bun]);
coboara(bun);
}
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
adauga(x);
}
for(int i = n; i > 1; i--)
{
swap(h[1], h[i]);
nh--;
coboara(1);
}
for(int i = 1; i <= n; i++)
cout << h[i] << " ";
return 0;
}