Cod sursa(job #2618359)

Utilizator grecub2000Grecu Bogdan grecub2000 Data 24 mai 2020 18:40:45
Problema Radix Sort Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <ctime>
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;
}