Cod sursa(job #3259763)

Utilizator amalia_ghicaAmalia Ghica amalia_ghica Data 27 noiembrie 2024 19:14:34
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;
int v[10000005];
inline void swa(int& a, int& b){
    int aux;
    aux = a;
    a = b;
    b = aux;
}
void rsort(int left, int right, int bitnr){
    if(left >= right  ||  bitnr == -1){
        return;
    }
    int i, j;
    j = left;
    for(i = left; i <= right; i++){
        if((v[i] & (1 << bitnr)) == 0){
            swa(v[i], v[j]);
            j++;
        }
    }
    rsort(left, j - 1, bitnr - 1);
    rsort(j, right, bitnr - 1);
}
int main()
{
    ifstream cin("radixsort.in");
    ofstream cout("radixsort.out");
    int n, a, b, c;
    cin >> n >> a >> b >> c;
    v[1] = b;
    for(int i = 2; i <= n; i++){
        v[i] = (a * v[i - 1] + b) % c;
    }
    rsort(1, n, 30);
    for(int i = 1; i <= n; i+=10){
        cout << v[i] << " ";
    }
    return 0;
}