Cod sursa(job #658270)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 8 ianuarie 2012 14:52:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <deque>
#include <vector>

using namespace std;

#define file_in "algsort.in"
#define file_out "algsort.out"

#define mod (1<<10)
#define nmax 501000

deque<int> B[mod];
int V[nmax];
int N,i,j,p,maxx;


int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d", &N);
	maxx=0;
	for (i=1;i<=N;++i){
		scanf("%d", &V[i]);
		maxx=max(maxx,V[i]);
	}
	
	p=0;
	while(maxx){
		
		for (i=1;i<=N;++i)
			 B[(V[i]>>p)&(mod-1)].push_back(V[i]);
		i=0;
		for (j=0;j<mod;++j){
			while(!B[j].empty()){
			   V[++i]=B[j].front();
			   B[j].pop_front();
			}
		}
		p+=10;
		maxx>>=10;
	}
	
	for (i=1;i<=N;++i)
		 printf("%d ", V[i]);

	return 0;
	
}