Cod sursa(job #848896)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 5 ianuarie 2013 21:13:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int v[500100],n,inserted;

void insereaza(int x){
	v[++inserted]=x;
	for(int i=inserted;v[i]>v[i>>1] && i>1;swap(v[i],v[i>>1]),i>>=1);
}

void sorteaza(){
	for(int sorted=n;sorted>1;){
		swap(v[1],v[sorted--]);
		for(int j=2;j<=sorted;j<<=1){
			if(j+1<=sorted && v[j+1]>v[j])
				j++;
			if(v[j]<v[j>>1])
				break;
			swap(v[j],v[j>>1]);
		}
	}
}

int main(){
	in>>n;
	for(int el,i=1;i<=n;++i){
		in>>el;
		insereaza(el);
	}
	sorteaza();
	for(int i=1;i<=n;++i){
		out<<v[i]<<" ";
	}	
}