Pagini recente » Cod sursa (job #940852) | Cod sursa (job #415135) | Cod sursa (job #2136154) | Cod sursa (job #2578982) | Cod sursa (job #2999951)
#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,fd;
do
{
p = bun;
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;
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);
}
for (int i=1; i<=nh; i++)
cout << i << ' ';
}