Cod sursa(job #1376370)

Utilizator tavonSuleyman Magnificul tavon Data 5 martie 2015 17:12:55
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
const int Nmax = 10000001;
int N,v[2][Nmax],a,b,c,p;
int m[1<<10],st[1<<10];
int main(){
    in>>N>>a>>b>>c;
    v[p][1]=b; for(int i=2;i<=N;i++) v[p][i]=(a*v[p][i-1]+b)%c;
    for(int k=0;k<=3;k++){
        p=!p;
        for(int i=0;i<(1<<8);i++) m[i]=0,st[i]=1;
        for(int i=1;i<=N;i++) m[(v[!p][i]>>(8*k))%(1<<8)]++;
        for(int i=1;i<(1<<8);i++) m[i]+=m[i-1];
        for(int i=1;i<=N;i++){
            int w=(v[!p][i]>>(8*k))%(1<<8),l=(w>0?m[w-1]:0);
            v[p][l+st[w]]=v[!p][i],st[w]++;
        }
    }
    for(int i=1;i<=N;i+=10) out<<v[p][i]<<' ';out<<'\n';
    return 0;
}