Pagini recente » Cod sursa (job #1327317) | Cod sursa (job #1748692) | Cod sursa (job #1103054) | Cod sursa (job #1903624) | Cod sursa (job #829376)
Cod sursa(job #829376)
#include<fstream>
#define max(x,y) (x<y)?x:y
using namespace std;
int a[2000001];
int maxim,val,pos,l,r;
void update(int nod,int left, int right){
if(left==right){
a[nod]=val;
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];
}
else{
a[nod]=a[(nod<<1)+1];
}
}
void del(int nod,int left,int right){
if(left==right){
a[nod]=2147483647;
}
else{
int mij=(left+right)>>1;
if(a[nod<<1]==val)
del(nod<<1,left,mij);
else
if(a[(nod<<1)+1]==val)
del((nod<<1)+1,mij+1,right);
if(a[nod<<1]<a[(nod<<1)+1]){
a[nod]=a[nod<<1];
}
else{
a[nod]=a[(nod<<1)+1];
}
}
}
int main(){
int n,m,x,i;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for(i=1;i<=n;++i){
fin>>val; pos=i;
update(1,1,n);
}
for(i=1;i<=n;++i){
fout<<a[1]<<' ';
val=a[1];
del(1,1,n);
}
return 0;
}