Pagini recente » Cod sursa (job #256309) | Cod sursa (job #882243) | Cod sursa (job #458915) | Cod sursa (job #2642532) | Cod sursa (job #1661902)
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[500005],n;
void urcare(int p)
{
int x;
x=a[p];
while((p>=2)&&(a[p/2]<x))
{
a[p]=a[p/2];
p=p/2;
}
a[p]=x;
}
void coborare(int p,int n)
{
int x,r;
x=a[p];
while(p*2<=n)
{
r=p*2;
if((r+1<=n)&&(a[r+1]>a[r]))
{
r=r+1;
}
if(a[r]>x)
{
a[p]=a[r];
p=r;
}
else
{
break;
}
}
a[p]=x;
}
int main()
{
int i,aux;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
}
for(i=2;i<=n;i++)
{
urcare(i);
}
for(i=n;i>=2;i--)
{
aux=a[i];
a[i]=a[1];
a[1]=aux;
coborare(1,i-1);
}
for(i=1;i<=n;i++)
{
fout<<a[i]<<" ";
}
fout.close();
fin.close();
return 0;
}