Cod sursa(job #1108583)

Utilizator tudorv96Tudor Varan tudorv96 Data 15 februarie 2014 20:28:32
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;

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

const int N = 1e7 + 5;

unsigned a[2][N], n, v[N], A, B, C, MAX;

int main() {
    fin >> n >> A >> B >> C;
    v[0] = B;
    for (unsigned i = 1; i < n; ++i)
        v[i] = (1LL * A * v[i-1] + B) % C;
    for (unsigned p = 0; p < 32; ++p) {
        unsigned crt = 1LL << p;
        a[1][0] = a[0][0] = 0;
        for (unsigned i = 0; i < n; ++i)
            if (v[i] & crt)
                a[1][++a[1][0]] = v[i];
            else
                a[0][++a[0][0]] = v[i];
            unsigned k = 0;
            for (int i = 0; i < 2; ++i)
                for (unsigned j = 1; j <= a[i][0]; ++j)
                    v[k++] = a[i][j];
    }
    for (unsigned i = 0; i < n; i += 10)
        fout << v[i] << " ";
}