Pagini recente » Cod sursa (job #1294261) | Cod sursa (job #2330744) | Monitorul de evaluare | Cod sursa (job #1184047) | Cod sursa (job #659840)
Cod sursa(job #659840)
#include <stdio.h>
#include <list>
using namespace std;
int maxim,n,v[500002];
list<int> bucket[1000], bucket2[1000], final;
void radix(){
int x;
int digit=1;
while (digit<=1000000){
for (int i=1;i<=n;i++){
bucket[(v[i]/digit)%1000].push_back(v[i]);
}
int indice=0;
for (int i=1;i<=n;i++){
while (bucket[indice].empty()){
indice++;
}
v[i]=bucket[indice].front();
bucket[indice].pop_front();
}
digit*=10;
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
maxim=-1;
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d",&v[i]);
if (v[i]>maxim) maxim=v[i];
}
radix();
for (int i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}