Cod sursa(job #1369796)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 3 martie 2015 11:27:30
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#include<queue>

#define Nmax 10000005
#define MASK 511

using namespace std;

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

using namespace std;

int V[Nmax];
queue<int > Q[MASK];

int main()
{
    int N, A, B, C;
    in >> N >> A >> B >> C;

    V[1] = B;
    for (int i = 2; i <= N; i++)
        V[i] = (1LL * V[i - 1] * A + B) % C;

    for (int t = 0; t < 4; t++)
    {
        for (int i = 1; i <= N; i++)
            Q[V[i] & (MASK << (t << 3))].push(V[i]);

        int k = 0;
        for (int i = 0; i < MASK; i++)
            while (!Q[i].empty())
            {
                V[++k] = Q[i].front();
                Q[i].pop();
            }
    }

    for (int i = 1; i <= N; i += 10)
        out << V[i] << " ";
}