Pagini recente » Cod sursa (job #204719) | Cod sursa (job #1526749) | Cod sursa (job #1284606) | Cod sursa (job #3146508) | Cod sursa (job #713427)
Cod sursa(job #713427)
#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",&a[i]);
if(a[i]>maxi) maxi=a[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[(a[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((a[j]/imp)%10>=1)
{
b[p[(a[j]/imp)%10-1]+1]=a[j];
p[(a[j]/imp)%10-1]++;
}
else
{
b[p[10]]=a[j];
p[10]++;
}
}
aux=b;
b=a;
a=aux;
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}