Pagini recente » Cod sursa (job #221452) | Cod sursa (job #550192) | Cod sursa (job #2018233) | Cod sursa (job #1415767) | Cod sursa (job #2897989)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N=500000;
int nh, 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, 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[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;
f >> n;
for (int i = 0; i < n; i++)
{
int val;
f >> val;
adauga(val);
}
for(int i = 0; i < n; i++)
{
v[i] = h[1];
sterge(1);
}
for (int i = 0; i < n; i++)
{
g << v[i] << " ";
}
return 0;
}