Pagini recente » Cod sursa (job #919925) | Cod sursa (job #1962236) | Cod sursa (job #417049) | Cod sursa (job #2765145) | Cod sursa (job #713403)
Cod sursa(job #713403)
#include<cstdio>
#include<cstring>
using namespace std;
int maxi,imp,*a,*b,*aux,i,n,j,ap[13],p[13],x[500002],y[500002];
int pow(int x,int y)
{
int i;
int p=1;
for(i=1;i<=y;i++)
p=p*x;
return p;
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
a=x;
b=y;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
if(x[i]>maxi) maxi=x[i];
}
for(i=1;i<=11;i++)
{
memset(ap,0,sizeof(ap));
imp=pow(10,i-1);
if(imp>maxi) break;
for(j=1;j<=n;j++)
ap[(x[j]/imp)%10]++;
p[0]=ap[0];
for(j=1;j<=9;j++)
p[j]=p[j-1]+ap[j];
p[10]=1;
for(j=1;j<=n;j++)
{
if((x[j]/imp)%10>=1)
{
y[p[(x[j]/imp)%10-1]+1]=x[j];
p[(x[j]/imp)%10-1]++;
}
else
{
y[p[10]]=x[j];
p[10]++;
}
}
a=b;
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}