Cod sursa(job #1841995)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 6 ianuarie 2017 13:42:30
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#define NMAX 10000010
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");

int v[NMAX], q[NMAX], n, a, b, c;

void RadixSort()
{
    int bit = 0;
    while (bit < 31)
    {
        int v0 = 1, v1 = n + 1;
        for (int i = 1; i <= n; i++)
        {
            if ((v[i] & (1<<bit)))
                //v1.push_back(v[i]);
                q[v1--] = v[i];
            else
                //v0.push_back(v[i]);
                q[v0++] = v[i];
        }

        for (int i = 1; i < v0; i++)
            v[i] = q[i];
        for (int i = n + 1; i > v1; i--)
            v[v0++] = q[i];
        bit++;
    }
}

int main()
{
    f>>n>>a>>b>>c;
    v[1] = b % c;
    for (int i = 2; i <= n; i++)
        v[i] = (a * v[i - 1] + b) % c;
    RadixSort();
    for (int i = 1; i <= n; i+=10)
        g<<v[i]<<' ';
    return 0;
}