Cod sursa(job #2282967)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 14 noiembrie 2018 19:52:37
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

const int N=10000000+5;
const int MOD=(1<<16);

int n;
int a,b,c;
int v[N],aux[N];
int f[MOD];

int main() {
    fin>>n>>a>>b>>c;
    v[1]=b;
    for(int i=2;i<=n;i++) {
        v[i]=(1LL*v[i-1]*a+b)%c;
    }
    for(int p=0;p<32;p+=16) {
        for(int i=0;i<MOD;i++) f[i]=0;
        for(int i=1;i<=n;i++) f[(v[i]>>p)%MOD]++;
        for(int i=1;i<MOD;i++) f[i]+=f[i-1];
        for(int i=n;i>=1;i--) aux[f[(v[i]>>p)%MOD]--]=v[i];
        for(int i=1;i<=n;i++) v[i]=aux[i];
    }
    for(int i=1;i<=n;i+=10) {
        fout<<v[i]<<" ";
    }
    fout<<"\n";
    return 0;
}