Pagini recente » Cod sursa (job #1466430) | Cod sursa (job #2202291) | Cod sursa (job #172157) | Cod sursa (job #2800488) | Cod sursa (job #2290748)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int x[500001];
void push(int pas)
{
while ( pas / 2 && x[pas / 2] < x[pas])
{
swap(x[pas], x[pas / 2]);
pas = pas / 2;
}
}
void pop(int pas, int &k)
{
swap(x[pas], x[k]);
k--;
int aux = 0;
while (pas != aux)
{
aux = pas;
if (2 * aux <= k && x[pas] < x[aux * 2])
pas = 2 * aux;
if (2 * aux + 1 <= k && x[pas] < x[2 * aux + 1])
pas = 2 * aux + 1;
swap(x[pas], x[aux]);
}
}
int main()
{
int n, i, m;
f >> n;
for (i = 1; i <= n; i++)
f >> x[i];
for (i = 1; i <= n; i++)
push(i);
m = n;
for(i = m; i >= 1; i--)
{
pop(1, n);
}
for(i = 1; i <= m; i++)
g << x[i] << " ";
return 0;
}