Cod sursa(job #1128370)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 27 februarie 2014 16:46:57
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
using namespace std;

int N,v[10000010],aux[10000010],contor[130],index[130],bitmax=128;

void citire() {

    ifstream in("radixsort.in");
    int i,a,b,c;
    in>>N>>a>>b>>c;
    v[1]=b;
    for(i=2;i<=N;i++)
        v[i]=(v[i-1]*a+b)%c;
    in.close();

}

void solve() {

    int i,step;
    for(step=0;step<=24;step+=8) {

        for(i=1;i<bitmax;i++)
            contor[i]=0;

        for(i=1;i<=N;i++) {
            aux[i]=v[i];
            contor[ (aux[i]>>step) & (bitmax-1)]++;
        }

        index[0]=1;
        for(i=1;i<bitmax;i++)
            index[i]=index[i-1]+contor[i-1];

        for(i=1;i<=N;i++)
            v[ index[(aux[i]>>step)&(bitmax-1)]++ ]=aux[i];
    }
}

void afisare() {

    ofstream out("radixsort.out");
    int i;
    for(i=1;i<=N;i+=10)
        out<<v[i]<<' ';
    out<<'\n';
    out.close();

}

int main () {

    citire();
    solve();
    afisare();
    return 0;

}