Cod sursa(job #1953293)

Utilizator tudormaximTudor Maxim tudormaxim Data 4 aprilie 2017 19:04:58
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

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

const int maxn = 1e7 + 5;
queue <int> Q[256];
int V[maxn];

void Radix (int n) {
    for (int bit = 0; bit < 32; bit += 8) {
        int lg = 0;
        for (int i = 1; i <= n; i++) {
            int pos = (V[i] >> bit) & 255;
            Q[pos].push(V[i]);
        }
        for (int i = 0; i < 256; i++) {
            while (!Q[i].empty()) {
                V[++lg] = Q[i].front();
                Q[i].pop();
            }
        }
    }
}

int main () {
    ios_base :: sync_with_stdio (false);
    int n, a, b, c, i;
    fin >> n >> a >> b >> c;
    V[1] = b % c;
    for (i = 2; i <= n; i++) {
        V[i] = (1LL * a * V[i - 1] + b) % c;
    }
    Radix(n);
    for (i = 1; i <= n; i+= 10) {
        fout << V[i] << " ";
    }
    fout << "\n";
    fin.close();
    fout.close();
    return 0;
}