Pagini recente » Cod sursa (job #102110) | Cod sursa (job #680640) | Cod sursa (job #179574) | Cod sursa (job #2372858) | Cod sursa (job #2031004)
#include <fstream>
#define DIM 500002
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long n, h[DIM], x, nn;
void percolate(long long val)
{
h[++nn] = val;
int c = nn;
int p = nn / 2;
while(p >= 1 && h[c] > h[p])
{
swap(h[c], h[p]);
c = p;
p = c / 2;
}
}
void sift(long long nod)
{
swap(h[nn], h[nod]);
-- nn;
int p = nod;
int c = 2 * p;
if(h[c + 1] > h[c] && c < nn) ++ c;
while(h[c] > h[p] && c <= nn)
{
swap(h[c], h[p]);
p = c;
c = 2 * p;
if(h[c + 1] > h[c]) ++ c;
}
}
int main()
{
f>>n;
for(int i = 1; i <= n; ++ i)
{
f>>x;
percolate(x);
}
for(int i = 1; i <= n; ++ i)
sift(1);
for(int i = 1; i <= n; ++ i)
g<<h[i]<<" ";
return 0;
}