Pagini recente » Cod sursa (job #994461) | Cod sursa (job #2350659) | Cod sursa (job #2782731) | Cod sursa (job #930320) | Cod sursa (job #2897988)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int N=500000;
int nh;
int h[N+1],v[N];
void urca(int p)
{
while (p > 1 && h[p] < h[p/2])
{
swap(h[p], h[p/2]);
p = p/2;
}
}
void coboara(int p)
{
int fs = 2*p;
int fd = 2*p+1;
int 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[bun], h[p]);
coboara(bun);
}
}
void adauga(int val)
{
h[++nh] = val;
urca(nh);
}
void sterge(int p)
{
if (p == nh)
{
nh--;
return;
}
h[p] = h[nh--];
urca(p);
coboara(p);
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int val;
cin >> val;
adauga(val);
}
for(int i = 0; i < n; i++)
{
v[i] = h[1];
sterge(1);
}
for (int i = 0; i < n; i++)
{
cout << v[i] << " ";
}
return 0;
}