Cod sursa(job #661433)

Utilizator StefanLacheStefan Lache StefanLache Data 14 ianuarie 2012 15:36:30
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void ordoneaza_dupa_cifra_k(int v[],int n,int k)
{
    int i,aux[10]={0};

    int nou[100];
    int taie=pow(10,k-1);
    for(i=0;i<n;i++)
        aux[(v[i]/taie)%10]++;
    for(i=1;i<=9;i++)
        aux[i]+=aux[i-1];

    for(i=n-1;i>=0;i--)
        {
            nou[aux[(v[i]/taie)%10]-1]=v[i];
            aux[(v[i]/taie)%10]--;
        }
    for(i=0;i<n;i++)
        v[i]=nou[i];

}
int main()
{
    FILE *f=fopen("algsort.in","rt");
    FILE *g=fopen("algsort.out","wt");
    int n,i,j,v[500000],A[500000],taie=1,itermm,nrmax=0,nrcif;
    fscanf(f,"%i",&n);
    for(i=0;i<n;i++)
        {
            nrcif=0;
            fscanf(f,"%i",&v[i]);
            j=v[i];
            while(j)
                {
                    nrcif++;
                    j/=10;
                }
            if(nrcif>nrmax)
                nrmax=nrcif;
        }

    for(i=1;i<=nrmax;i++)
        ordoneaza_dupa_cifra_k(v,n,i);
    for(i=0;i<n;i++)
        fprintf(g,"%i ",v[i]);
    return 0;
}