Cod sursa(job #2491650)

Utilizator MihneaGhiraMihnea MihneaGhira Data 12 noiembrie 2019 21:51:21
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout("radixsort.out");
int n,A,B,C,pow,maxim;
int v[10000010],aux[10000010],f[260];

int putere(int x,int pow) {
    return ( (x>>pow)&255 );
}

int main() {
    fin>>n>>A>>B>>C;
    v[1]=B;
    for(int i=2;i<=n;i++){
        v[i]=(A*v[i-1]+B)%C;
        maxim=max(maxim,v[i]);
    }

    for(int secv=1;secv<=4;secv++){

        ///for(int i=1;i<=255;i++)
           /// f[i]=0;
        memset(f,0,sizeof(f+1));

        for(int i=1;i<=n;i++)
            f[putere(v[i],pow)]++;
        for(int i=1;i<=255;i++)
            f[i]+=f[i-1];

        for(int i=n;i>=1;i--){
            aux[f[putere(v[i],pow)]]=v[i];
            f[putere(v[i],pow)]--;
        }
        for(int i=1;i<=n;i++)
            v[i]=aux[i];
        pow+=8;
    }

    for(int i=1;i<=n;i+=10)
        fout<<v[i]<<" ";
    return 0;
}