Cod sursa(job #828836)

Utilizator geniucosOncescu Costin geniucos Data 4 decembrie 2012 15:30:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
#include<vector>
using namespace std;
int aux,p,i,j,k,n,l,nr,maxi,a[500002];
vector < int > h[11];
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    scanf("%d",&a[i]);
    if(a[i]>maxi) maxi=a[i];
}
p=1;
aux=maxi;
maxi=0;
while(aux>0)
{
    maxi++;
    aux=aux/10;
}
for(i=1;i<=maxi;i++)
{
    for(j=1;j<=n;j++)
        h[(a[j]/p)%10].push_back(a[j]);
    nr=0;
    for(j=0;j<=9;j++)
    {
        l=h[j].size();
        for(k=0;k<l;k++)
        {
            nr++;
            a[nr]=h[j][k];
        }
        h[j].clear();
    }
    p=p*10;
}
for(i=1;i<=n;i++)
    printf("%d ",a[i]);
return 0;
}