Cod sursa(job #2417436)

Utilizator silviumihailSilviu Mihail silviumihail Data 29 aprilie 2019 19:59:41
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include<bits/stdc++.h>
using namespace std;
int n,a,b,c,v[10000010],cif[20],aux[10000010],i,ma,e,mi=INT_MAX;
int main()
{
    ifstream cin ("radixsort.in");
    ofstream cout ("radixsort.out");
    cin>>n>>a>>b>>c;
    v[1]=b;
    ma=b;
    for(i=2; i<=n; ++i)
    {
        v[i]=1LL*(1LL*a*v[i-1]+b)%c;
        ma=max(ma,v[i]);
        mi=min(mi,v[i]);
    }
    e=1;
    while(ma/e>0)
    {
        for(i=0; i<=10; ++i)cif[i]=0;
        for(i=1; i<=n; ++i)cif[(v[i]/e)%10]++;
        for(i=1; i<=9; ++i)cif[i]+=cif[i-1];
        for(i=n; i>=1; --i)
        {
            aux[cif[(v[i]/e)%10]]=v[i];
            cif[(v[i]/e)%10]--;
        }
        for(i=1; i<=n; ++i)v[i]=aux[i];
        e*=10;
    }
    for(i=1; i<=n; i+=10)cout<<v[i]<<" ";
    return 0;
}