Cod sursa(job #2192667)

Utilizator PredaBossPreda Andrei PredaBoss Data 6 aprilie 2018 20:39:30
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n,a,b,c;
vector<long long>elem,bucket[10];
int main()
{
    fin>>n>>a>>b>>c;
    elem.push_back(b);
    int mx=b;
    for(int i=1;i<n;i++)
    {
        elem.push_back((a*elem[i-1]+b)%c);
        if(elem[i]>mx)
            mx=elem[i];
    }
    int counter=0;
    while(mx>0)
    {
        counter++;
        mx/=10;
    }
    long long t=1;
    for(int p=1;p<=counter;p++)
    {
        for(int i=0;i<n;i++)
        {
            if(elem[i]/t==0)
            {
                bucket[0].push_back(elem[i]);
                continue;
            }
            bucket[(elem[i]/t)%10].push_back(elem[i]);
        }
    elem.clear();
    for(int j=0;j<=9;j++)
    {
        for(int g=0;g<bucket[j].size();g++)
            elem.push_back(bucket[j][g]);
        bucket[j].clear();
    }
    t*=10;
    }
    int pos=0;
    while(pos<n)
    {
        fout<<elem[pos]<<" ";
        pos+=10;
    }
    return 0;
}