Pagini recente » Cod sursa (job #1245034) | Cod sursa (job #1682526) | Cod sursa (job #2848690) | Cod sursa (job #1560902) | Cod sursa (job #3123988)
#include <fstream>
using namespace std;
const int N = 5e5 + 1;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n, v[N], h[N], nh;
void urca(int p)
{
while(p > 1 && h[p] < h[p/2])
{
swap(h[p], h[p/2]);
p /= 2;
}
}
void adauga(int val)
{
h[++nh] = val;
urca(nh);
}
void coboara(int p)
{
int fs = 2 * p, fd = 2 * p + 1, bun = p;
if(fs <= nh && h[fs] > h[bun])
{
bun = fs;
}
if(fd <= nh && h[fd] > h[bun])
{
bun = fd;
}
if(bun != p)
{
swap(h[p], h[bun]);
coboara(bun);
}
}
int main()
{
in >> n;
for(int i = 1; i <= n; i++)
{
int x;
in >> x;
adauga(x);
}
for(int i = 1; i <= n; i++)
{
adauga(v[i]);
}
for(int i = n; i > 1; i--)
{
swap(h[1], h[i]);
nh--;
coboara(1);
}
for(int i = 1; i <= n; i++)
out << h[i] << " ";
return 0;
}