Cod sursa(job #1313518)

Utilizator j.loves_rockJessica Joanne Patrascu j.loves_rock Data 10 ianuarie 2015 19:01:17
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include<fstream>
using namespace std;
#define maxn 10000007
unsigned int n,a,b,c,v[maxn],y[10][maxn],z[9];
    ifstream f("radixsort.in");
    ofstream g("radixsort.out");
void radixsort(unsigned int o,unsigned int n)
{
    unsigned int i,j,k,d=10,e=1,l,m;
    for(i=1;i<=o;i++)
    {
        for(j=1;j<=9;j++) z[j]=0;
        l=1;
        for(j=1;j<=n;j++)
            {m=v[j]%d/e;
            if(m==0)
                {v[l]=v[j]; if(i==o&&l%10==1) g<<v[l]<<" ";l++;}
            else
            {z[m]++;
            y[m][z[m]]=v[j]; }}

        for(j=1;j<=9;j++)
            for(k=1;k<=z[j];k++)
            {v[l]=y[j][k];
            if(i==o&&l%10==1) g<<v[l]<<" ";
            l++;}
        e=e*10;d=d*10;}
}

int main()
{

    unsigned int i,j=0;
    f>>n>>a>>b>>c;
    v[1]=b%c;
    for(i=2;i<=n;i++)
    {
        v[i]=(1LL*a*v[i-1]%c+b)%c;
    }

    while(c>0) {j++; c=c/10;}

    radixsort(j,n);

    f.close();
    g.close();
    return 0;
    }