Pagini recente » Cod sursa (job #2303907) | Cod sursa (job #27260) | Cod sursa (job #920381) | Cod sursa (job #1000203) | Cod sursa (job #659134)
Cod sursa(job #659134)
#include<cstdio>
#include<list>
#define MOD 10000ll
using namespace std;
list<int> frec[MOD], frec2[MOD], sorted;
void MakeBucket(long long startingDigit, list<int> oldBucket[MOD], list<int> newBucket[MOD]){
int i, x;
for(i = 0; i < MOD; i++)
while (!oldBucket[i].empty()){
x = oldBucket[i].front();
oldBucket[i].pop_front();
if (x / startingDigit == 0) sorted.push_back(x);
else newBucket[(x / startingDigit) % MOD].push_back(x);
}
}
int main(){
freopen("algsort.in", "r", stdin), freopen("algsort.out", "w", stdout);
int N, i, x;
scanf("%d", &N);
for (i = 0; i < N; i++){
scanf("%d", &x);
frec[x % MOD].push_back(x);
}
MakeBucket(MOD, frec, frec2);
MakeBucket(MOD * MOD, frec2, frec);
MakeBucket(MOD * MOD * MOD, frec, frec2);
while(!sorted.empty())
printf("%d ", sorted.front()), sorted.pop_front();
return 0;
}