Cod sursa(job #811469)

Utilizator MciprianMMciprianM MciprianM Data 12 noiembrie 2012 14:23:32
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <cstring>

using namespace std;

unsigned a[500009], b[500009];
unsigned frecv[256];

int main() {
    int i, n, j;
	unsigned ff;
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f >> n;
	for(i = 0; i < n; ++i) {
		f >> a[i];
	}
	for(j = 0, ff = 0xFF; ff; ff <<= 8, j += 8) {
		for(i = 0; i < n; ++i) {
			frecv[(a[i] & ff) >> j]++;
		}
		for(i = 1; i < 256; ++i) {
			frecv[i] += frecv[i - 1];
		}
		for(i = n - 1; i >= 0; --i) {
			b[--frecv[(a[i] & ff) >> j]] = a[i];
		}
		memcpy(a, b, sizeof(a));
	}
	for(i = 0; i < n; ++i) {
		g << a[i] << ' ';
	}
	g << endl;
	f.close();
	g.close();
	return 0;
}