Pagini recente » Cod sursa (job #2798596) | Cod sursa (job #381272) | Cod sursa (job #722039) | Cod sursa (job #2280597) | Cod sursa (job #2483712)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long x,n,v[2*500000+10],l;
void up(ll p)
{
if(p>1&&v[p]<v[p/2])
{
swap(v[p],v[p/2]);
up(p/2);
}
}
void down(ll p)
{
if(p*2+1<=l)
{
if(v[p*2]<v[2*p+1]&&v[p*2]<v[p])
{
swap(v[2*p],v[p]);
down(2*p);
}
else if(v[2*p+1]<v[p*2]&&v[2*p+1]<v[p])
{
swap(v[2*p+1],v[p]);
down(2*p+1);
}
}
else if(v[2*p]<v[p]&&2*p<=l)
{
swap(v[2*p],v[p]);
down(2*p);
}
}
void deletee(ll p)
{
swap(v[l],v[p]);
l--;
up(p);
down(p);
}
void add(ll x)
{
v[++l]=x;
up(l);
}
int main()
{
f>>n;
for(ll i=1;i<=n;i++)
{
f>>x;
add(x);
}
while(l)
{
g<<v[1]<<" ";
deletee(1);
}
return 0;
}