Cod sursa(job #2759885)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 21 iunie 2021 12:14:13
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
#define ui unsigned int

using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

vector<ui> radix(vector<ui> a)
{
    //i know, many magic numbers
    ui comp=1,mod=8;
    for(int b=0; b<4; b++)
    {
        vector<ui> buckets[256];
        comp=(comp<<mod);
        if(b==0) comp--;
        for(int i=0; i<a.size(); i++)
        {
            //cout<<((a[i]&comp)>>(mod*b))<<' '<<comp<<' '<<mod<<'\n';
            buckets[(a[i]&comp)>>(mod*b)].push_back(a[i]);
        }
        ui k=0;
        for(int i=0; i<=(comp>>(mod*b)); i++)
        {
            for(int j=0; j<buckets[i].size(); j++)
            {
                a[k]=buckets[i][j];
                k++;
            }
        }
    }
    return a;
}

int main()
{
    ui n,a,b,c,nr;
    vector<ui> v;
    f>>n>>a>>b>>c;
    nr=b;
    for(int i=0; i<n; i++)
    {
        nr=(a*nr+b)%c;
        v.push_back(nr);
    }
    v=radix(v);
    //for(int i=0; i<n; i++)
    //{
        //g<<v[i]<<' ';
    //}
    //g<<'\n';
    for(int i=0; i<n; i++)
    {
        if(i%10==0)g<<v[i]<<' ';
    }
    return 0;
}