Pagini recente » Cod sursa (job #1511640) | Cod sursa (job #458069) | Statistici Bsa as (bombardier) | Clasament all-you-can-code2008 | Cod sursa (job #2483740)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
unsigned long long v[500005];
void up(int p)
{
if(p>1&&v[p]<v[p/2])
{
swap(v[p],v[p/2]);
up(p/2);
}
}
void down(int p)
{
if(2*p+1<=n)
{
if(v[2*p]<v[2*p+1]&&v[2*p]<v[p])
{
swap(v[2*p],v[p]);
down(2*p);
}
else if(v[2*p+1]<v[p])
{
swap(v[2*p+1],v[p]);
down(2*p+1);
}
}
else if(2*p<=n&&v[2*p]<v[p])
{
swap(v[p],v[2*p]);
down(2*p);
}
}
void add(unsigned long long x,int i)
{
v[i]=x;
up(i);
}
void del(int p)
{
swap(v[n],v[p]);
n--;
up(p);
down(p);
}
void Read()
{
f>>n;
int i;
for(i=1; i<=n; i++)
{
int x;
f>>x;
add(x,i);
}
}
void afis()
{
while(n)
{
g<<v[1]<<" ";
del(1);
}
}
int main()
{
Read();
afis();
return 0;
}