Pagini recente » Cod sursa (job #1037781) | Cod sursa (job #1490835) | Cod sursa (job #2881518) | Cod sursa (job #869123) | Cod sursa (job #770113)
Cod sursa(job #770113)
#include<fstream>
using namespace std;
int h[500005],hp;
void downheap(int k){
int nod=1;
while(nod)
{
nod=0;
if(2*k<=hp)
{
nod=2*k;
if(nod+1<=hp && h[nod]<h[nod+1])++nod;
if(h[nod]<h[k])nod=0;
}
if(nod)
{
h[k]=(h[k]^h[nod])^(h[nod]=h[k]);
k=nod;
}
}
}
int main(void){
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N,x,i;
fin>>N; x=N/2; hp=N;
for(i=1;i<=N;++i)fin>>h[i];
for(i=x;i>0;--i)
downheap(i);
for(i=N;i>1;--i)
{
h[1]=(h[1]^h[i])^(h[i]=h[1]);
--hp;
downheap(1);
}
for(i=1;i<=N;++i)fout<<h[i]<<' ';
return 0;
}