Pagini recente » Cod sursa (job #639991) | Cod sursa (job #1079658) | Cod sursa (job #1982078) | Cod sursa (job #3254098) | Cod sursa (job #1080849)
#include <cstdio>
#include <queue>
#define N 500000
using namespace std;
unsigned int n;
long long int v[N];
queue <long long int> q[10];
void lsd()
{
long long int k=1;
bool run=1;
int i,x,pos;
while(run)
{
run=0;
i=0;
pos=0;
while(i<n)
{
x=v[i++];
int t = (x/k)%10;
if(t>0) q[ t ].push(x);
else v[pos++] = x;
}
k*=10;
for(i=1;i<10;++i)
{
while(!q[i].empty())
{
v[pos++]=q[i].front();
q[i].pop();
//if(i>0)
run=1;
}
}
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(size_t i=0;i<n;++i)
scanf("%d",&v[i]);
lsd();
for(size_t i=0;i<n;++i)
printf("%d ",v[i]);
return 0;
}