Pagini recente » Cod sursa (job #2813654) | Cod sursa (job #2969017) | Cod sursa (job #1615533) | Cod sursa (job #2442256) | Cod sursa (job #3039662)
#include <fstream>
using namespace std;
string file = "algsort";
ifstream cin(file +".in");
ofstream cout(file +".out");
int h[500001], nh;
inline void urca(int p)
{
while (p>1 && h[p/2] > h[p])
{
swap(h[p/2],h[p]);
p /= 2;
}
}
inline void coboara(int p)
{
while (true)
{
int bun = p,fs = 2*p,fd=2*p+1;
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]);
p = bun;
}
else
break;
}
}
inline void adauga(int val)
{
h[++nh] = val;
int p = nh;
urca(p);
}
inline void sterge (int p)
{
h[p] = h[nh--];
urca(p);
coboara(p);
}
int main()
{
int n, x;
cin >> n;
for (int i=1; i<=n; i++)
{
cin >> x;
adauga(x);
}
while (nh)
{
cout << h[1] << ' ';
sterge(1);
}
}