Pagini recente » Cod sursa (job #1840850) | Cod sursa (job #1095678) | Cod sursa (job #573211) | Cod sursa (job #2093681) | Cod sursa (job #2483710)
#include <bits/stdc++.h>
#define NMAX 500005
#define ll long long
using namespace std;
ifstream f("algsort.in") ;
ofstream g ("algsort.out") ;
ll N , l = 0 , v[2*NMAX] , x;
void down (ll 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[2*p] , v[p]) ;
down (2*p) ;
}
}
void up (ll p)
{
if (p > 1 && v[p] < v[p/2])
{
swap(v[p],v[p/2]) ;
up(p/2);
}
}
void del (ll p)
{
swap(v[p] , v[l]);
l -- ;
up(p);
down(p);
}
void add (ll x)
{
l ++ ;
v[l] = x;
up(l);
}
int main()
{
f >> N ;
for (ll i = 1 ; i <= N ; ++i)
{
f >> x ;
add(x) ;
}
while (l != 0)
{
g << v[1] << ' ';
del(1) ;
}
f.close();
g.close();
return 0 ;
}