Pagini recente » Cod sursa (job #2951315) | Cod sursa (job #567333) | Cod sursa (job #2796849) | Cod sursa (job #942135) | Cod sursa (job #1050711)
#include <iostream>
#include <fstream>
#include<algorithm>
using namespace std;
int cn;
int v[500001];
void adaugare (int i)
{
int poz = i;
while (v[poz] < v[poz/2])
{
swap(v[poz], v[poz/2]);
poz = poz/2;
}
}
void sortare(int poz )
{
int i;
swap(v[1], v[cn]);
cn --;
for (i=poz; i<=cn; i++)
{
poz = i;
while (v[poz] < v[poz/2])
{
swap(v[poz], v[poz/2]);
poz = poz/2;
}
}}
int main()
{
int i,n;
ifstream f("heap.in");
ofstream g("heap.out");
f >> n;
f >> v[1];
for (i=2; i<=n; i++)
{
f >> v[i];
adaugare(i);
}
cn = n;
i = 1;
while (i<=cn)
{
g << v[i] <<" ";
sortare(i);
}
// for (i=1; i<=n; i++)
// cout << v[i] << " ";
return 0;
}