Pagini recente » Cod sursa (job #290612) | Cod sursa (job #2041073) | Cod sursa (job #2172847) | Cod sursa (job #565192) | Cod sursa (job #1312975)
#include<cstdio>
using namespace std;
struct nod
{
int inf;
nod *leg;
};
int v[1000002],n,div,i,j,k,x,nr[10];
nod *q;
void reinit(nod *p[10])
{
nod *q,*aux;
for(int i=0;i<=9;i++)
{
q=p[i];
for(int j=1;j<=nr[i];j++)
{
if(q->leg!=NULL)
aux=q->leg;
delete q;
q=aux;
}
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
div=1;
nod *p[10],*u[10];
for(i=0;i<=10;i++)
{
reinit(p);
reinit(u);
for(j=0;j<=9;j++)
{
p[j]=new nod;
u[j]=new nod;
nr[j]=0;
}
for(j=1;j<=n;j++)
{
q=new nod;
x=(v[j]/div)%10;
if(nr[x]==0)
{
p[x]->inf=v[j];
p[x]->leg=NULL;
u[x]=p[x];
nr[x]=1;
}
else
{
q->inf=v[j];
q->leg=NULL;
u[x]->leg=q;
u[x]=q;
nr[x]++;
}
}
v[0]=0;
for(j=0;j<=9;j++)
{
q=p[j];
for(k=1;k<=nr[j];k++)
{
v[++v[0]]=q->inf;
q=q->leg;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d ",v[i]);
}
}