Cod sursa(job #2618938)

Utilizator jungleTUDOSE MIHAI-CRISTIAN jungle Data 26 mai 2020 16:53:07
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <list>
#include <cmath>

using namespace std;

void radixsort(vector<int> &v)
{
    int i,j,p,k,r,maxi,cifmax;
    list<int>bucket[10];
    maxi = cifmax = 0;
    for(i=0; i<v.size(); i++)
        if(v[i] > maxi)
            maxi = v[i];
    while(maxi)
    {
        cifmax+=1;
        maxi/=10;
    }
    for(i=0; i<cifmax; i++)
    {
        k = ceil(pow(10,i+1));
        p = ceil(pow(10,i));
        for(j=0; j<v.size(); j++)
        {
            r = (v[j]%k)/p;
            bucket[r].push_back(v[j]);
        }
        v.clear();
        for(j=0; j<10; j++)
            if(bucket[j].size())
            {
                v.insert(v.end(),bucket[j].begin(),bucket[j].end());
                bucket[j].clear();
            }
    }
}

int main()
{
    int n, a, b, c;
    vector<int> v;
    ifstream f("radixsort.in");
    f>>n>>a>>b>>c;
    f.close();
    v.push_back(b);
    for(int i=1; i<n; i++)
        v.push_back((a*v[i-1]+b)%c);
    radixsort(v);
    ofstream g("radixsort.out");
    for(int i=0; i<n; i+=10)
        g<<v[i]<<' ';
    g.close();
    return 0;
}