Cod sursa(job #1966406)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 15 aprilie 2017 11:14:04
Problema Radix Sort Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>
int v[10000001],f[260],aux[10000001];
int main()
{
    int n,a,b,c,p2,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;
    p2=0;
    for(i=1; i<=4; i++)
    {
        for(j=0; j<256; j++)
            f[j]=0;
        for(j=1; j<=n; j++)
            f[(v[j]>>p2)%256]++;
        for(j=1; j<256; j++)
            f[j]=f[j-1]+f[j];
        for(j=255; j>0; j--)
            f[j]=f[j-1]+1;
        f[0]=1;
        for(j=1; j<=n; j++)
            aux[f[(v[j]>>p2)%256]++]=v[j];
        for(j=1; j<=n; j++)
            v[j]=aux[j];
        p2+=8;
    }
    for(i=1; i<=n; i+=10)
        printf("%d ",v[i]);

    return 0;
}