Pagini recente » Cod sursa (job #1426812) | Cod sursa (job #3152446) | Cod sursa (job #232296) | Cod sursa (job #1306910) | Cod sursa (job #659136)
Cod sursa(job #659136)
#include<cstdio>
#include<list>
#define MOD 1000
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(1000, frec, frec2);
MakeBucket(1000000, frec2, frec);
MakeBucket(1000000000, frec, frec2);
MakeBucket(1000000000000ll, frec2, frec);
while(!sorted.empty())
printf("%d ", sorted.front()), sorted.pop_front();
return 0;
}