Pagini recente » Cod sursa (job #112830) | Cod sursa (job #129255) | Cod sursa (job #472364) | Cod sursa (job #1241083) | Cod sursa (job #829307)
Cod sursa(job #829307)
#include<fstream>
#define max(x,y) (x<y)?x:y
using namespace std;
int a[1000100];
int p[2000100];
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;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for(i=1;i<=n;++i){
fin>>val; pos=i;
update(1,1,n);
}
val=1<<30;
for(i=1;i<=n;++i){
fout<<a[1]<<' ';
val=2147483647; pos=p[1];
update(1,1,n);
}
return 0;
}