Cod sursa(job #2138020)

Utilizator inquisitorAnders inquisitor Data 21 februarie 2018 11:07:34
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <fstream>

int N,A,B,C,v[0x989680],w[0x989680],i=1;

void R(int A[],int B[],int d)
{
    int f[256]{},p[256];*p=-1;

    for(i=N;i;++f[A[--i]>>d&255]);

    for(i=0;i^256;p[++i]=p[i-1]+f[i-1]);

    for(i=0;i^N;++i)B[++p[A[i]>>d&255]]=A[i];
}



int main()
{
    std::ifstream("radixsort.in")>>N>>A>>B>>C;
    std::ofstream o("radixsort.out");

    for(*v=B;i^N;++i) v[i]=(1ULL*v[i-1]*A+B)%C;

    R(v,w,0);R(w,v,8);R(v,w,16);R(w,v,24);

    for(i=0;i^N;i+=10) o<<v[i]<<' ';
}