Cod sursa(job #1565607)

Utilizator 2chainzTauheed Epps 2chainz Data 11 ianuarie 2016 00:58:11
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
const int Nmax = 10000001;
unsigned int v[Nmax],au[Nmax],p[1<<8],N,A,B,C;
int main(){
    in>>N>>A>>B>>C;
    v[1]=B;for(int i=2;i<=N;i++) v[i]=(1LL*A*v[i-1]+B)%C;
    for(int k=0;k<4;k++){
        for(int i=1;i<=N;i++) p[(v[i]>>(k*8))%(1<<8)]++;
        for(int i=1;i<(1<<8);i++) p[i]+=p[i-1];
        for(int i=N;i>=1;i--) au[p[(v[i]>>(k*8))%(1<<8)]--]=v[i];
        for(int i=0;i<(1<<8);i++) p[i]=0;
        for(int i=1;i<=N;i++) v[i]=au[i];
    }
    for(int i=1;i<=N;i+=10) out<<v[i]<<' ';
    return 0;
}