Cod sursa(job #2625939)

Utilizator Gabriela_4Gabriela Ion Gabriela_4 Data 6 iunie 2020 11:01:05
Problema Radix Sort Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

long int N, A, B, C;
int v[10000000];

void Radix_Sort(int v[], int n, short int base = 256) {
    int count[256], aux[n];
    for (int i = 0; i < 32; i += 8) {
        for (int j = 0; j < 256; j++)
            count[j] = 0;
        for (int j = 0; j < n; j++)
            count[(v[j] >> i) & 255]++;
        for (int j = 1; j < 256; j++)
            count[j] += count[j - 1];
        for (int j = n - 1; j >= 0; j--) {
            count[(v[j] >> i) & 255]--;
            aux[count[(v[j] >> i) & 255]] = v[j];
        }
        for (int j = 0; j < n; j++)
            v[j] = aux[j];
    }

}

int main() {
    f >> N >> A >> B >> C;
    v[1] = B;
    for (int i = 2; i <= N; i++)
        v[i] = ((A * v[i - 1]) + B) % C;
    Radix_Sort(v, N + 1);
    for (int i = 1; i <= N; i += 10)
        g << v[i] << " ";
    f.close();
    g.close();
    return 0;

}