Cod sursa(job #2540797)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 7 februarie 2020 18:51:35
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#define BAZA 256
using namespace std;
int n,a,b,c,i,maxim,cifre,z,v[10000001],w[10000001],f[10];
int main () {
    ifstream fin ("radixsort.in");
    ofstream fout ("radixsort.out");
    fin>>n>>a>>b>>c;
    v[1]=(a*v[0]+b)%c;
    for (i=2;i<=n;i++){
        v[i]=(a*v[i-1]+b)%c;
        if (v[i]>maxim){
            maxim=v[i];
        }
    }
    while (maxim!=0){
        cifre++;
        maxim/=BAZA;
    }
    for (c=1;c<=cifre;c++){
        for (i=0;i<BAZA;i++){
            f[i]=0;
        }
        for (i=1;i<=n;i++){
            f[((v[i]>>z)&(BAZA-1))]++;
        }
        for (i=1;i<BAZA;i++){
            f[i]+=f[i-1];
        }
        for (i=n;i>=1;i--){
            w[f[((v[i]>>z)&(BAZA-1))]--]=v[i];
        }
        for (i=1;i<=n;i++){
            v[i]=w[i];
        }
        z+=8;
    }
    for (i=1;i<=n;i+=10){
        fout<<v[i]<<" ";
    }
    return 0;
}