Cod sursa(job #1966380)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 15 aprilie 2017 10:54:23
Problema Radix Sort Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
int v[10000001],f[10],aux[10000001];
int main()
{
    int n,a,b,c,p10,i,j;
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    scanf("%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
    for(i=2; i<=n; i++)
        v[i]=((long long)a*v[i-1]+b)%c;
    p10=1;
    for(i=1; i<=10; i++)
    {
        for(j=0; j<10; j++)
            f[j]=0;
        for(j=1; j<=n; j++)
            f[v[j]/p10%10]++;
        for(j=1; j<10; j++)
            f[j]=f[j-1]+f[j];
        for(j=9; j>0; j--)
            f[j]=f[j-1]+1;
        f[0]=1;
        for(j=1; j<=n; j++)
            aux[f[v[j]/p10%10]++]=v[j];
        for(j=1; j<=n; j++)
            v[j]=aux[j];
        p10*=10;
    }
    for(i=1; i<=n; i+=10)
        printf("%d ",v[i]);

    return 0;
}