Cod sursa(job #2451323)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 26 august 2019 15:19:36
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;
#define range(cnt, a, b, step, code) for(size_t cnt = a; cnt <= b; cnt += step){code;}
size_t N, A, B, C, v[10000001], aux[10000001];

int main()
{
    ios_base::sync_with_stdio(false);

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

    fin >> N >> A >> B >> C;
    v[1] = B;

    range(i, 2, N, 1, v[i] = (1LL * A * v[i - 1] + B) % C);

    range(byte, 0, 3, 1,
        size_t index[256];

        range(i, 1, 255, 1, index[i] = 0);

        range(i, 1, N, 1, index[    (v[i] >> (byte*8)) & 255    ]++);

        range(i, 2, 255, 1, index[i] += index[i - 1]);

        for(size_t i = N; i >= 1; i--) aux[  index[    (v[i] >> (byte*8)) & 255    ]-- ] = v[i];

        range(i, 1, N, 1, v[i] = aux[i]);
    );

    range(i, 1, N, 10, fout << v[i] << ' ');

}