Cod sursa(job #3140913)

Utilizator SSKMFSS KMF SSKMF Data 10 iulie 2023 17:31:19
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
using namespace std;

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

int lungime , sir[10000001] , copie[10000001] , aparitii[512];

int main ()
{
    int factor , mod;
    cin >> lungime >> factor >> sir[1] >> mod;

    for (int indice = 2 ; indice <= lungime ; indice++)
        sir[indice] = (1LL * factor * sir[indice - 1] + sir[1]) % mod;

    for (int biti = 0 , masca = 511 ; biti < 32 ; biti += 8)
    {
        for (int indice = 1 ; indice <= lungime ; indice++)
            aparitii[(sir[indice] >> biti) & masca]++;

        int inceput[512]; inceput[0] = 1;
        for (int indice = 1 ; indice <= masca ; indice++) {
            inceput[indice] = inceput[indice - 1] + aparitii[indice - 1];
            aparitii[indice - 1] = 0;
        }

        aparitii[masca] = 0;
        for (int indice = 1 ; indice <= lungime ; indice++)
            copie[inceput[(sir[indice] >> biti) & masca]++] = sir[indice];

        swap(copie , sir);
    }

    for (int indice = 1 ; indice <= lungime ; indice += 10)
        cout << sir[indice] << ' ';

    cout.close(); cin.close();
    return 0;
}