Pagini recente » Cod sursa (job #2871244) | Cod sursa (job #2629494) | Cod sursa (job #3210542) | Cod sursa (job #911627) | Cod sursa (job #829302)
Cod sursa(job #829302)
#include<cstdio>
#define max(x,y) (x<y)?x:y
int a[600000];
int p[600000];
int maxim,val,pos,l,r;
void update(int nod,int left, int right){
if(left==right){
a[nod]=val; p[nod]=pos;
return;
}
int mij=(left+right)>>1;
if(pos<=mij)
update((nod<<1),left,mij);
else
update((nod<<1)+1,mij+1,right);
if(a[nod<<1]<a[(nod<<1)+1]){
a[nod]=a[nod<<1];
p[nod]=p[nod<<1];
}
else{
a[nod]=a[(nod<<1)+1];
p[nod]=p[(nod<<1)+1];
}
}
int main(){
int n,m,x,i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&val); pos=i;
update(1,1,n);
}
val=1<<30;
for(i=1;i<=n;++i){
printf("%d ",a[1]);
val=2147483647; pos=p[1];
update(1,1,n);
}
return 0;
}