Cod sursa(job #2614765)

Utilizator UtilizatorGBGeorge Bodea UtilizatorGB Data 12 mai 2020 17:37:09
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream f;
std::ofstream g;

void radix_sort(int v[], int nr) {
    int mask = (1 << 8) - 1;
    int pas = 0;
    std::vector<int> bucket[256];
    int maxi = 0, cifre_max = 0;
    for (int i = 0; i < nr; i++) {
        if (v[i] > maxi)
            maxi = v[i];
    }
    while (maxi != 0) {
        cifre_max++;
        maxi >>= 8;
    }

    for (int k = 0; k < cifre_max; k++) {
        for (int i = 0; i < nr; i++)
            bucket[(v[i] >> pas) & mask].push_back(v[i]);
        nr = 0;
        for (int i = 0; i < 256; i++) {
            for (int j = 0; j < bucket[i].size(); j++)
                v[nr++] = bucket[i][j];
            bucket[i].clear();
        }
        pas += 8;
    }

}
int main() {

    int n,A,B,C;
    f.open("radixsort.in");
    g.open("radixsort.out");
    f>>n>>A>>B>>C;
    int v[n];
    f>>v[0];
    for(int i=1;i<n;i++)
        v[i]=(A* v[i-1] + B) % C;
    radix_sort(v,n);
    for(int i=0;i<n;i=i+10)
        g<<v[i]<<' ';
    f.close();
    g.close();
    return 0;
}