Cod sursa(job #1362189)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 26 februarie 2015 10:53:59
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define mask 255

using namespace std;

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

int n, a, mod;

int v[10000010], w[10000010];

int f[260];

int main () {

    fin >> n >> a >> v[1] >> mod ;

    for (int i = 2; i <= n; i++)
        v[i] = (1LL * a * v[i-1] + v[1]) % mod;

    for (int p = 0; p <= 24; p += 8) {

        for (int i = 1; i <= n; i++)
            f[ (v[i] >> p) & 255 ]++;

        for (int i = 1; i <= 255; i++)
            f[i] += f[i - 1];

        for (int i = n; i >= 1; i--) {
            int cur = (v[i] >> p) & mask;

            w[ f[cur] ] = v[i];
            f[cur]--;
        }

        for (int i = 1; i <= n; i++)
            v[i] = w[i];

    }

    for (int i = 1; i <= n; i += 10)
        fout << v[i] << " ";

    return 0;
}