Cod sursa(job #2608492)

Utilizator ddeliaioanaaDumitrescu Delia Ioana ddeliaioanaa Data 1 mai 2020 14:10:36
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

std::ifstream cin("radixsort.in");
std::ofstream cout("radixsort.out");

void generate(int v[], int n, int A, int B, int C)
{
    int i;
    v[1] = B;
    for(i = 2; i <= n; i ++)
        v[i] = (A * v[i-1] + B) % C;
}

void print(int v[], int n)
{
    int i = 1;
    while(i <= n)
    {
       cout<<v[i]<<" ";
        i += 10;
    }
}

void radixSort(int v[], int n)
{
    std::vector <int> sublists[256];
    int ind = 0, exp = 1, i, ind2;
    while(ind < 4)
    {
        for(i = 1; i <= n; i ++)
            sublists[(v[i] / exp) % 256].push_back(v[i]);

        ind2 = 1;
        for(i = 0; i < 256; i++)
            for (auto &it: sublists[i])
            {    v[ind2++] = it;
                 sublists[i].clear();
            }

        ind += 1;
        exp = exp * 256;
    }

}

int main()
{
    int maxi=0, n, i, A, B, C;
    cin>>n>>A>>B>>C;
    int v[n + 1];

    generate(v, n, A, B, C);
    radixSort(v, n);
    print(v, n);

    return 0;
}