Cod sursa(job #2253236)

Utilizator pinteastefanPintea Teodor Stefan pinteastefan Data 3 octombrie 2018 19:58:56
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

int values[10000000];
vector <int> ordered(10000000);

void radixSort(int arr[], int n, int exp){
    int k = 0;
    vector <int> bucket[256];
    for (int i = 1; i <= n; i++){
        bucket[(arr[i] >> (8 * exp)) & 255].push_back(arr[i]);
    }
    for (int i = 0; i<= 255; i++) {
        for (int j = 0; j < bucket[i].size(); j++){
            k++;
            ordered[k] = bucket[i][j];
        }
    }
    for (int i = 1; i <= n; i ++){
        arr[i] = ordered[i];
    }
}

int main() {
    ifstream f("radixsort.in");
    ofstream g("radixsort.out");
    int n, a, b, c;
    int max;
    f >> n >> a >> b >> c;
    for (int i = 1; i <= n; i ++){
        if (i == 1){
            values[i] = b;
            max = values[i];
        }
        else{
            values[i] = (1LL * a * values[i - 1] + b) % c;
            if (values[i] > max){
                max = values[i];
            }
        }
    }
    for (int i = 0; i <= 3; ++ i)
    {
        radixSort(values, n, i);
    }

    for ( int i = 1; i <= n ;i += 10){
        g << values[i] << " ";
    }
    return 0;
}