Cod sursa(job #2451339)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 26 august 2019 15:33:33
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
int N, A, B, C, v[10000001];

void read()
{
    ifstream fin("radixsort.in");
    fin >> N >> A >> B >> C;
    v[1] = B;

    for(int i = 2; i <= N; i++) v[i] = (1LL * A * v[i - 1] + B) % C;
}

void print()
{
    ofstream fout("radixsort.out");

    for(int i = 1; i <= N; i += 10) fout << v[i] << ' ';
}

void countSort(int byte)
{

    int aux[N + 5], counter[256];

    for(int i = 1; i <= 255; i++) counter[i] = 0;

    for(int i = 1; i <= N; i++)  counter[    (v[i] >> (byte * 8)) & 255  ] ++;

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

    for(int i = N; i >= 1; i --) aux[counter[    (v[i] >> (byte * 8)) & 255  ]--] = v[i];

    for(int i = 1; i <= N; i++) v[i] = aux[i];

}

int main()
{
    read();

    for(int i = 0; i <= 3; i++)
    {
        countSort(i);
    }

    print();
}