Pagini recente » Cod sursa (job #875014) | Cod sursa (job #416387) | Cod sursa (job #322554) | Cod sursa (job #326965) | Cod sursa (job #567233)
Cod sursa(job #567233)
#include <fstream>
using namespace std;
const int N=500001;
int v[N],n;
ifstream in("algsort.in");
ofstream out("algsort.out");
inline void sch(int &a,int &b)
{
int c=a;a=b;b=c;
}
inline void up(int x)
{
if (x>1 && v[x]<v[x/2])
{
sch(v[x],v[x/2]);
up(x/2);
}
}
inline void down(int x)
{
int m=x;
if (2*x<=v[0] && v[m]>v[2*x])
m=2*x;
if (2*x<v[0] && v[m]>v[2*x+1])
m=2*x+1;
if (m!=x)
{
sch(v[m],v[x]);
down(m);
}
}
int main()
{
in>>n;
for (v[0]=1;v[0]<=n;v[0]++)
{
in>>v[v[0]];
up(v[0]);
}
while (n--)
{
out<<v[1]<<" ";
v[1]=v[v[0]--];
down(1);
}
out<<"\n";
return 0;
}