Pagini recente » Cod sursa (job #2941385) | Cod sursa (job #2411273) | Clasamentul arhivei educationale | Cod sursa (job #635297) | Cod sursa (job #2737230)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,h[500100];
void up(int nod)
{
if(nod/2>=1 && h[nod]<h[nod/2])swap(h[nod],h[nod/2]),up(nod/2);
}
void down(int nod)
{
if(2*nod+1<=n && (h[2*nod]<h[nod] || h[2*nod+1]<h[nod]))
{
if(h[2*nod]<=h[2*nod+1])swap(h[2*nod],h[nod]),down(2*nod);
else swap(h[2*nod+1],h[nod]),down(2*nod+1);
}
else if(2*nod<=n && h[2*nod]<h[nod])swap(h[2*nod],h[nod]),down(2*nod);
}
int i,x,t;
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
t++;h[t]=x;up(t);
}
for(i=1;i<=n;i++)
{
g<<h[1]<<" ";
h[1]=INT_MAX;
down(1);
}
return 0;
}