Cod sursa(job #1369813)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 3 martie 2015 11:33:38
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<fstream>
using namespace std;

ifstream  fin("radixsort.in");
ofstream fout("radixsort.out");

unsigned int aa, bb, cc, a[2][10000009], pr[10], ul[10], n, i, nr[10], cif, k, x;
long long p, p1;

int main()
{
    fin>>n>>aa>>bb>>cc;
    p=1;
    a[0][1]=bb;
    nr[a[0][1]/p%10]++;
    for(i=2;i<=n;i++)
    {
        a[0][i]=(aa*a[0][i-1]+bb)%cc;
        nr[a[0][i]/p%10]++;
    }

    for(k=1;k<=10;k++)
    {
        pr[0]=1;
        ul[0]=0;
        for(i=1;i<=9;i++)
        {
            pr[i]=pr[i-1]+nr[i-1];
            ul[i]=pr[i]-1;
            nr[i-1]=0;
        }
        nr[9]=0;

        p1=p*10;
        for(i=1;i<=n;i++)
        {
            x=a[1-k%2][i];
            cif=x/p%10;
            ul[cif]++;
            a[k%2][ul[cif]]=x;
            nr[x/p1%10]++;
        }
        p=p1;
    }

    for(i=1;i<=n;i=i+10)
    {
        fout<<a[0][i]<<" ";
    }
    fout<<"\n";
    fout.close();
    fin.close();
    return 0;
}