Cod sursa(job #2225771)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 28 iulie 2018 10:35:49
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

const int kMax = 10000001;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

int elem[kMax];
vector<int> counter[256];
unsigned int aux;

int main() {
    
    int n, a, b, c, i, j;
    
    fin >> n >> a >> b >> c;
    fin.close();
    
    elem[1] = b;
    for (i = 2; i <= n; i++)
        elem[i] = (a * elem[i - 1] + b) % c;
        
    for (i = 0; i < 4; i++) {
        
        for (j = 0; j < 256; j++)
            counter[j].clear();
            
        for (j = 1; j <= n; j++) {
            aux = (elem[j] >> (8 * i)) & 255;
            counter[aux].push_back(elem[j]);
        }
        
        int nr = 0;
        for (j = 0; j < 256; j++)
            for (int k : counter[j]) {
                nr++;
                elem[nr] = k;
            }
    }
    
    
    for (i = 1; i <= n; i += 10) {
        fout << elem[i] << " ";
    }
    
    fout.close();    
    
    return 0;
}