Pagini recente » Cod sursa (job #616041) | Cod sursa (job #1890107) | Cod sursa (job #2750558) | Cod sursa (job #929382) | Cod sursa (job #2722639)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int t,h[500100];
void up(int nod)
{
if(nod>1 && h[nod/2]>h[nod])
{
swap(h[nod/2],h[nod]);
up(nod/2);
}
}
void down(int nod)
{
if(2*nod+1<=t && (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<=t && h[2*nod]<h[nod])
{
swap(h[2*nod],h[nod]);
down(2*nod);
}
}
int n,i,x;
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;
}