Cod sursa(job #2866490)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 9 martie 2022 19:04:46
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <vector>
#include <fstream>
	
std::ifstream f("radixsort.in");
std::ofstream g("radixsort.out");

int main(){
    int n, i, j, k, arr, start;
    long long a, b, c, x;
    std::vector<int> t[2][256];
    
    f >> n >> a >> b >> c;

    t[0][b & 255].push_back((int)b);
    x = b;
    for(i = 1; i < n; i ++){
        x = (a * x + b) % c;
        t[0][x & 255].push_back((int)x);
    }

    arr = 1;
    for(k = 8; k < 32; k ++){
        for(i = 0; i < 256; ++ i){
            for(j = 0; j < t[arr ^ 1][i].size(); j ++)
                t[arr][(t[arr ^ 1][i][j] >> k) & 255].push_back(t[arr ^ 1][i][j]);
            t[arr ^ 1][i].clear();
        }
        arr = (arr ^ 1);
    }

    arr = (arr ^ 1);
    start = 0;
    for(i = 0; i < 256; i ++){
        for(j = start; j < t[arr][i].size(); j += 10)
            g << t[arr][i][j] << " ";
        start = j - t[arr][i].size();
    } 
    return 0;
}