Cod sursa(job #829307)

Utilizator BalcauIonutFMI-Balcau Ionut BalcauIonut Data 5 decembrie 2012 00:10:44
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#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;
}