Pagini recente » Cod sursa (job #197304) | Cod sursa (job #100572) | Cod sursa (job #1310857) | Cod sursa (job #809842) | Cod sursa (job #2897986)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, nh;
const int N = 500001;
int h[N], v[N];
void urca (int p)
{
while (p > 1 && h[p] < h[p/2])
{
swap (h[p], h[p/2]);
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 (fs <= nh && h[fd] < h[bun])
bun = fd;
if (bun != p)
{
swap (h[p], h[bun]);
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()
{
fin >> n;
nh = 0;
for (int i=1; i<=n; i++)
{
int val;
fin >> val;
adauga(val);
}
for (int i=0; i<n; i++)
{
v[i] = h[1];
sterge(1);
}
for (int i=0; i<n; i++)
fout << v[i] << " ";
return 0;
}