Cod sursa(job #2623052)

Utilizator mihai_radulescuMihai Radulescu mihai_radulescu Data 2 iunie 2020 15:32:34
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb

#include <iostream>
#include <fstream>
using namespace std;


ifstream in("radixsort.in");
ofstream out("radixsort.out");
long int n, a, b, c;
int v[10000000];
short int base = 256;

void radixsort(int v[], int n, short int base = 256){
    int counter[base], aux[n], j, i;
    for(i = 0; i < 32; i += 8){
        for(j = 0; j < 256; j++){

            counter[j] = 0;
        }

        for(j = 0; j < n; j++){
            counter[(v[j] >> i) & 255] ++;
        }
        for(j = 1; j < 256; j++){
            counter[j] += counter[j - 1];
        }
        for (j = n - 1; j >= 0; j--){
            counter[(v[j] >> i) & 255] --;
            aux[counter[(v[j] >> i) & 255]] = v[j];
        }
        for(j = 0; j < n; j++){
            v[j] = aux[j];
        }
    }
}



int main()
{
    in>>n>>a>>b>>c;
    v[0] = b;
    for(int i = 0; i < n; i++){
        v[i] = (v[i-1]*a + b) % c;
    }
    radixsort(v,n);
    for(int i=0; i < n; i += 10){
        out << v[i] << " ";
    }
    in.close();
    out.close();
    return 0;
}