Cod sursa(job #1916391)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 9 martie 2017 09:21:03
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <vector>
#define Nmax 10000001
using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

int n,a,b,c,v[Nmax],nr;
vector<int> BUK[301];

void _sort(int mask)
{
    for (int i=1;i<=n;i++)
        BUK[v[i]&mask].push_back(v[i]);
    nr = 1;
    for (int i=0;i<=260;i++)
        for (int j=0;j<BUK[i].size();j++)
            v[nr++] = BUK[i][j];
}

int main()
{
    f>>n>>a>>b>>c;
    v[1] = b;
    for (int i=2;i<=n;i++)
        v[i] = (a*v[i-1] + b)%c;


    int mask = (1<<8)-1;

    for (int i=1;i<=4;i++,mask<<=8)
        _sort(mask);

    for (int i=1;i<=n;i+=10)
        g<<v[i]<<' ';

    return 0;
}