Cod sursa(job #811459)

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

using namespace std;

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

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