Cod sursa(job #2212490)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 14 iunie 2018 11:58:59
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>

using namespace std;

int v[10000001],pos[10000001];


void radix(int n)
{
    int aux[10000001];
    for(int i=0; i<32; i+=16)
    {
        int z=0;
        for(int k=0; k<=65535; k++)
            for(int j=1; j<=n; j++)
                if((v[pos[j]]>>i)%65536==k)
                    aux[++z]=pos[j];
        for(int j=1; j<=n; j++)
            pos[j]=aux[j];
    }
}

int main()
{
    int i,n,a,b,c;
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    scanf("%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
    pos[1]=1;
    for(i=2; i<=n; i++)
    {
        v[i]=((long long)v[i-1]*a+b)%c;
        pos[i]=i;
    }
    radix(n);
    for(i=1; i<=n; i+=10)
        printf("%d ",v[pos[i]]);

    return 0;
}