Cod sursa(job #2451355)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 26 august 2019 15:56:58
Problema Radix Sort Scor 70
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(int cnt = a; cnt <= b; cnt += step){code;}
int N, A, B, C, v[10000001], aux[10000001], index[256];

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

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

    fin >> N >> A >> B >> C;
    v[0] = B % C;

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

    range(byte, 0, 3, 1,

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

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

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

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

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

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

}