Pagini recente » Cod sursa (job #1125549) | Cod sursa (job #602769) | Cod sursa (job #404312) | Cod sursa (job #2229712) | Cod sursa (job #2642684)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
const int B = 20;
const int LIM = 2147483647;
int n;
int v[500005];
vector <int> nr[B + 1];
int getPow(int b, int lim) {
int cnt = 0, p = 1;
while(p <= lim / b)
cnt++, p *= b;
return cnt;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++)
cin >> v[i];
int p = 1, lim = getPow(B, LIM);
for(int j = 0; j < lim; j++) {
for(int i = 1; i <= n; i++)
nr[(v[i] / p) % B].push_back(v[i]);
int m = 0;
for(int i = 0; i < B; i++) {
for(auto &j : nr[i])
v[++m] = j;
nr[i].clear();
}
p *= B;
}
for(int i = 1; i <= n; i++)
cout << v[i] << " ";
return 0;
}