Pagini recente » Cod sursa (job #2343050) | Cod sursa (job #998362) | Cod sursa (job #995378) | Cod sursa (job #324492) | Cod sursa (job #2189527)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001],l,n;
void up(int p)
{
if(v[p]<v[p/2]&&p>1)
{
swap(v[p],v[p/2]);
up(p/2);
}
}
void down(int p)
{
if(2*p+1<=l)
{
if(v[2*p]<v[p]||v[2*p+1]<v[p])
{
if(v[2*p]<v[2*p+1])
{
swap(v[p],v[2*p]);
down(2*p);
}
else{
swap(v[p],v[2*p+1]);
down(2*p+1);
}
}
}
else if(2*p<=l)
{
if(v[2*p]<v[p])
{
swap(v[p],v[2*p]);
down(2*p);
}
}
}
void del(int p)
{
swap(v[p],v[l]);
l--;
up(p);
down(p);
}
int main()
{
f>>n;
int x;
for(int i=1;i<=n;i++)
{
f>>x;
l++;
v[l]=x;
up(l);
}
while(l>0)
{
g<<v[1]<<" ";
del(1);
}
return 0;
}