Cod sursa(job #2192706)

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

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