Pagini recente » Cod sursa (job #2026368) | Cod sursa (job #1986068) | Cod sursa (job #855014) | Cod sursa (job #451370) | Cod sursa (job #1300675)
#include <cstdio>
#define DIM 500002
using namespace std;
int a[DIM],n,i,x,nr;
void swap(int &i,int &j){
int aux=i;
i=j;
j=aux;
}
void insert(int x){
a[++nr]=x;
int c=nr,p=c/2;
while(p>=1 && a[c]>a[p]){
swap(a[c],a[p]);
c=p;
p/=2;
}
}
void corect(int n){
int p=1,c=2;
while(c<=n){
if(c+1<=n && a[c+1]>a[c])
c++;
if(a[c]>a[p]){
swap(a[c],a[p]);
p=c;
c*=2;
}
else
break;
}
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&x);
insert(x);
}
for(i=n;i>=2;i--){
swap(a[1],a[i]);
corect(i-1);
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}