Pagini recente » Cod sursa (job #964108) | Cod sursa (job #2893621) | Cod sursa (job #1947317) | Cod sursa (job #57393) | Cod sursa (job #2999946)
#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]);
}
void coboara(int p)
{
int bun,fs,fd;
do
{
bun = p, fs = 2*p, fd = 2*p+1;
if (fd <= nh && h[p] > h[fd])
{
bun = fd;
swap(h[p],h[fd]);
}
else if (fs <= nh && h[p] > h[fs])
{
bun = fs;
swap(h[p],h[fs]);
}
}while (bun != p);
}
void adauga(int val)
{
h[++nh] = val;
urca(nh);
}
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);
}
}