Pagini recente » Istoria paginii runda/ioi_bil_c1/clasament | Istoria paginii runda/pre_dan_barbilian_2011 | Istoria paginii runda/test_001 | Istoria paginii runda/testi1 | Cod sursa (job #1061040)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500000],n,nh;
void RH(int i)
{
int l,r,max;
l=2*i;
r=2*i+1;
max=i;
if (l<=nh && v[l]>v[i])
max=l;
if (r<=nh && v[r]>v[max])
max=r;
if (max!=i)
{
swap(v[i],v[max]);
RH(max);
}
}
void CH()
{
int i;
nh=n;
for (i=n/2;i>=1;i--)
RH(i);
}
void HS()
{
int i;
CH();
for (i=n;i>=2;i--)
{
swap(v[1],v[i]);
nh--;
RH(1);
}
}
int main()
{
int i;
fin>>n;
nh=n;
for (i=1;i<=n;i++)
fin>>v[i];
HS();
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}