Cod sursa(job #1542825)

Utilizator lflorin29Florin Laiu lflorin29 Data 5 decembrie 2015 18:20:00
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;
using lint = long long int;

constexpr static int using_mask = 255;

int main() {
    ifstream cin("radixsort.in");
    ofstream cout("radixsort.out");

    int N, A, B, C; cin >> N >> A >> B >> C;
    vector<int>V(N, B);
    for(int i = 0; i < N - 1; ++i)
        V[i + 1] = (static_cast<lint>(A) * V[i] + B) % C;

    for(int Shift = 0; Shift < 32; Shift += 8) {
        array<vector<int>,using_mask + 1>Bucket;
        for(auto itr : V)
            Bucket[(itr >> Shift) & using_mask].emplace_back(itr);
        for(int i = 0, cnt = 0; i <= using_mask; ++i)
            for(auto itr : Bucket[i])
                V[cnt++] = itr;
    }

    for(int i = 0; i < N; i += 10)
       cout << V[i] << ' ';
    return 0;
}