Cod sursa(job #2223789)

Utilizator lupulescu2001Lupulescu Vlad lupulescu2001 Data 21 iulie 2018 15:19:03
Problema Radix Sort Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>

using namespace std;

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

int N,A,B,C,V[10000002],Sort[10000002];
const int Nr=255;

void RadixSort(){
    for(int p=0;p<25;p=p+8){
        int K[270]={0};
        for(int i=1;i<=N;i++)
            K[(V[i]>>p)&Nr]++;
        for(int i=1;i<=255;i++)
            K[i]=K[i]+K[i-1];
        for(int i=N;i>0;i--)
            Sort[K[(V[i]>>p)&Nr]--]=V[i];
        for(int i=1;i<=N;i++)
            V[i]=Sort[i];
    }
}

int main()
{
    fin>>N>>A>>B>>C;
    V[1]=B%C;
    for(int i=2;i<=N;i++)
        V[i]=(1LL*A*V[i-1]%C+B)%C;
    RadixSort();
    for(int i=1;i<=N;i=i+10)
        fout<<V[i]<<" ";
    fout<<'\n';
    return 0;
}