Pagini recente » Cod sursa (job #2259319) | Cod sursa (job #1276888) | Cod sursa (job #2999609) | Cod sursa (job #2349550) | Cod sursa (job #2068717)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500005],a[500005];
void down(int p)
{
if(p*2+1<=n&&(v[p*2]>v[p]||v[p*2+1]>v[p]))
{
if(v[p*2]>v[p*2+1])
{
swap(v[p],v[p*2]);
down(p*2);
}
else
{
swap(v[p],v[p*2+1]);
down(p*2+1);
}
}
else if(p*2<=n&&v[p*2]>v[p])
{
swap(v[p*2],v[p]);
}
}
void up(int p)
{
if(p>1&&v[p/2]<v[p])
{
swap(v[p],v[p/2]);
up(p/2);
}
}
void add(int x)
{
v[++n]=x;
up(n);
}
void dell(int p)
{
swap(v[p],v[n]);
n--;
up(p);
down(p);
}
int main()
{
int i,x,m;
f>>m;
for(i=1; i<=m; i++)
{
f>>x;
add(x);
}
while(n)
{
a[n]=v[1];
dell(1);
}
for(i=1;i<=m;i++) g<<a[i]<<" ";
return 0;
}