Pagini recente » Cod sursa (job #2726652) | Cod sursa (job #1025581) | Cod sursa (job #1727733) | Cod sursa (job #645833) | Cod sursa (job #2068836)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int h[500001],i,j,n,p,x,m=1;
void up(int p)
{
if(p>1 && h[p/2]>h[p])
{
swap(h[p],h[p/2]);
up(p/2);
}
}
void add(int x)
{
h[++m]=x;
up(m);
}
void down(int p)
{
if(p*2+1<=m && (h[p*2]<h[p] || h[p*2+1]<h[p]))
{
if(h[p*2]<h[p*2+1])
{
swap(h[p],h[p*2]);
down(p*2);
}
else
{
swap(h[p*2+1],h[p]);
down(p*2+1);
}
}
else if(p*2<=m && h[p*2]<h[p])
swap(h[p*2],h[p]);
}
void de(int p)
{
swap(h[p],h[m]);
m--;
up(p);
down(p);
}
int main()
{
f>>n>>h[1];
for(i=2;i<=n;i++)
f>>x,add(x);
for(i=1;i<=n;i++)
{
g<<h[1]<<" ";
de(1);
}
return 0;
}