Cod sursa(job #1081444)

Utilizator AllxCucuCucu Alexandru AllxCucu Data 13 ianuarie 2014 17:12:37
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <string.h>
using namespace std;
#define COUNT_N 256 
#define BYTE 8 
#define N_MAX 500004
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int a[N_MAX],b[N_MAX],count[COUNT_N],ind[COUNT_N]; 
void rad(int *a,int *b,int byte,int n) 
{
	memset(count,0,sizeof(count)); 
	int i,Lm = COUNT_N - 1; 
	for(i = 0; i < n; ++i) 
	++count[(a[i]>>byte)&Lm]; 
	for(i = 0;i < COUNT_N; ++i) 
	ind[i] = ind[i-1] + count[i-1]; 
	for(i = 0; i < n; ++i) 
	b[ind[(a[i]>>byte)&Lm]++] = a[i]; 
}
void radix(int *a,int n) 
{
	rad(a,b,0 ,n); 
	rad(b,a, BYTE,n); 
	rad(a,b,2*BYTE,n); 
	rad(b,a,3*BYTE,n); 
}
int main()
{
	int a[N_MAX],i,n;
	cin>>n;
	for(i=0; i<n; i++)
cin>>a[i];
radix(a, n);
	for(i=0; i<n; i++)
cout<<a[i];
	return 0;
}