Cod sursa(job #2550360)

Utilizator Constantin.Dragancea Constantin Constantin. Data 18 februarie 2020 19:12:22
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;

int n, a, b, c;
int v[10000100];

void radixSort(int dim = 1){
    vector <int> buckets[260];
    for (int cnt = 0; cnt <= 3; cnt++, dim *= 256){
        for (int i=0; i<n; i++)
            buckets[(v[i] / dim) % 256].push_back(v[i]);
        int idx = 0;
        for (int i=0; i<256; i++){
            for (auto it: buckets[i]) v[idx++] = it;
            buckets[i].clear();
        }
    }
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ifstream cin ("radixsort.in");
    ofstream cout ("radixsort.out");
    cin >> n >> a >> b >> c;
    v[0] = b;
    for (int i=1; i<n; i++) v[i] = (1LL * a * v[i-1] + b) % c;
    radixSort();
    for (int i=0; i<n; i+=10) cout << v[i] << ' ';
    return 0;
}