Cod sursa(job #2550357)

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

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

int v[10000100];

int main(){
    ifstream cin ("radixsort.in");
    ofstream cout ("radixsort.out");
    int n, a, b, c;
    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(v, n);
    for (int i=0; i<n; i+=10) cout << v[i] << ' ';
    return 0;
}