Pagini recente » Cod sursa (job #1292300) | Cod sursa (job #2835799) | Cod sursa (job #1593655) | Cod sursa (job #3174508) | Cod sursa (job #2483775)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long n,i,v[500010], l, x;
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<=l)
{
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<=l && v[2*p]<v[p])
{
swap(v[p],v[2*p]);
down(2*p);
}
}
void add (int x)
{
l++;
v[l]=x;
up(l);
}
void del (int p)
{
swap(v[p], v[l]);
l -- ;
up(p);
down(p);
}
int main()
{ f >> n;
for ( i = 1; i <= n; i++ ){
f >> x;
add(x);
}
while (l != 0)
{
g << v[1] << ' ';
del(1) ;
}
return 0;
}