Pagini recente » Cod sursa (job #2909642) | Cod sursa (job #1678227) | Cod sursa (job #3289164) | Cod sursa (job #3281426) | Cod sursa (job #811475)
Cod sursa(job #811475)
#include <fstream>
#include <cstring>
#include <cassert>
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) {
assert(frecv[(a[i] & ff) >> j] > 0);
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;
}