Cod sursa(job #2124244)

Utilizator omegasFilip Ion omegas Data 7 februarie 2018 01:32:38
Problema Radix Sort Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>


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



int n;



void csort(vector<int>& v, int cifra,int nr) {
    int i;
    int op;
    int f[256];
    for(i=0;i<=255;++i){
        f[i] = 0;
    }
    vector<int> vv;

    for(i=0;i<n;++i){

        ++f[(v[i]&cifra)>>nr];
        vv.push_back(v[i]);

    }

    for(i=0;i<255;++i){
        f[i+1] +=f[i];

    }
    for(i=n - 1;i>=0;--i){
        op = (vv[i]&cifra)>>nr;
        v[f[op]-1] = vv[i];

        --f[op];

    }

}

int main()
{
    long long x;
    vector<int> v;
    long long a,b,c,i;
    fin >> n >> a >> b >> c;
    x = b;
    v.push_back(x);
    for(i=2;i<=n;++i){
        x = (a*x + b)%c;
        v.push_back(x);
    }


    csort(v,0x000000ff,0);
    csort(v,0x0000ff00,8);
    csort(v,0x00ff0000,16);
    csort(v,0x7f000000,24);
    for(i=0;i<n;i+=10){

            fout << v[i] << " ";
    }

    return 0;
}