Cod sursa(job #2519954)

Utilizator daru06Daria Culac daru06 Data 8 ianuarie 2020 18:20:14
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <queue>

using namespace std;

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

int n,a,b,c;
int nrcif,maxi, p10,i;
int v[10000001];
queue <int> q[10];

int main()
{
    f>>n>>a>>b>>c;
    v[1]=b;
    for(int i=2;i<=n;i++)
    {
        v[i]=(long long) (a*v[i-1]+b)%c;
        maxi=max(v[i],maxi);
    }
    while(maxi)
    {
        nrcif++;
        maxi/=10;
    }
    p10=1;
    for(int p=1;p<=nrcif;p++)
    {
        for(int i=1;i<=n;i++)
        {
            c=v[i]/ p10 %10;
            q[c].push(v[i]);
        }
        i=0;
        for(int iq=0;iq<=9;iq++)
            while(!q[iq].empty())
        {
            i++;
            v[i]=q[iq].front();
            q[iq].pop();
        }
        p10*=10;
    }
    for(int i=1;i<=n;i+=10)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}