Pagini recente » Cod sursa (job #1352818) | Cod sursa (job #1485594) | Cod sursa (job #2036579) | Cod sursa (job #347991) | Cod sursa (job #2845441)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
#define cin fin
#define cout fout
#define TOTAL_BUCKETS 2048
#define DIM 500002
int N, nr[2][DIM], a, b, c;
int cnt[TOTAL_BUCKETS];
void reorder(int bucket, int line) {
memset(cnt, 0, sizeof(cnt));
for(int i = 0; i < N; i++) {
cnt[(nr[line][i] >> bucket) % TOTAL_BUCKETS]++;
}
for(int i = 1; i < TOTAL_BUCKETS; i++) {
cnt[i] += cnt[i - 1];
}
for(int i = N - 1; i >= 0; --i) {
nr[1 - line][--cnt[(nr[line][i] >> bucket) % TOTAL_BUCKETS]] = nr[line][i];
}
}
void radix() {
for(int bucket = 0; bucket < 3; bucket++) {
reorder(11 * bucket, bucket % 2);
}
}
int main() {
cin >> N;
for(int i = 0; i < N; i++) {
cin >> nr[0][i];
}
radix();
for(int i = 0; i < N; i ++) {
cout << nr[1][i] << ' ';
}
cout << '\n';
return 0;
}