Cod sursa(job #1233585)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 25 septembrie 2014 18:59:29
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream ka("radixsort.in");
ofstream ki("radixsort.out");

const int N_MAX = 10000000;
int v[N_MAX + 1];
queue <int> coada[1 << 8];

int trans_nr(int i, int j)
{
    return v[i] >> (1 << (8 * j));
}

int n, a, b, c;
int main()
{
    ka >> n >> a >> b >> c;
    v[1] = b;
    for(int i = 2; i <= n; i++)
    {
        v[i] = (a * v[i-1] + b) % c;
    }
    for(int j = 0; j <= 3; j++)
    {
        for(int i = 1; i <= n; i++)
        {
            coada[trans_nr(i, j) % (1 << 8)].push(v[i]);
        }
        int k = 0;
        for(int i = 1; i <= (1 << 8); i++)
        {
            while(!coada[i].empty())
            {
                v[++k] = coada[i].front();
                coada[i].pop();
            }
        }
    }
    for(int i = 1; i <= n; i += 10)
        ki << v[i] << " ";
}