Pagini recente » Cod sursa (job #414641) | Cod sursa (job #1598629) | Cod sursa (job #2323304) | Cod sursa (job #1973319) | Cod sursa (job #2999958)
#include <fstream>
using namespace std;
string file = "algsort";
ifstream cin(file +".in");
ofstream cout(file +".out");
int h[500001], nh;
void urca(int p)
{
while (p>1 && h[p/2] > h[p])
{
swap(h[p/2],h[p]);
p /= 2;
}
}
void coboara(int p)
{
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]);
coboara(bun);
}
}
void adauga(int val)
{
h[++nh] = val;
int p = nh;
urca(p);
}
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);
}
}