Pagini recente » Cod sursa (job #2623365) | Cod sursa (job #3260962) | Cod sursa (job #1169252) | Cod sursa (job #1041310) | Cod sursa (job #2151989)
#include <fstream>
#include <algorithm>
#define nmax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[nmax],cnt=0;
inline void adauga(int x)
{
v[++cnt]=x;
int cmt=cnt;
while(v[cmt]<v[cmt/2])
swap(v[cmt],v[cmt/2]),cmt>>=1;
}
inline void afis()
{
fout<<v[1]<<" ";
v[1]=v[cnt];
cnt--;
int p=1;
while(p*2<=cnt&&(v[p]>v[p*2]||v[p]>v[p*2+1]))
{
if(v[p*2]<v[p*2+1])
{
swap(v[p],v[p*2]);
p=p*2;
}
else
{
swap(v[p],v[p*2+1]);
p=p*2+1;
}
}
}
int main()
{
int n,nr;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>nr;
adauga(nr);
}
for(int i=1;i<=n;i++)
afis();
return 0;
}