Cod sursa(job #1310893)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 7 ianuarie 2015 13:25:21
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include<fstream>
using namespace std;
#define maxn 10000007
#define maxm 1000005
int n,a,b,c,v[maxn],x[maxm],y[10][maxm],z[10];

void radixsort(int o,int n)
{
    int i,j,k,d=10,e=1,l,m;
    for(i=1;i<=o;i++)
    {
        for(j=0;j<=9;j++) z[j]=0;
        for(j=1;j<=n;j++)
            {m=v[j]%d/e;
            z[m]++;
            y[m][z[m]]=v[j]; }
        l=1;
        for(j=0;j<=9;j++)
            for(k=1;k<=z[j];k++)
            {v[l]=y[j][k];l++;}
        e=e*10;d=d*10;
    }
}

int main()
{
    ifstream f("radixsort.in");
    ofstream g("radixsort.out");
    int i,j=0;
    f>>n>>a>>b>>c;
    v[1]=b;
    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);

    for(i=1;i<=n;i+=10)g<<v[i]<<" ";

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