Cod sursa(job #1309003)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 5 ianuarie 2015 01:16:22
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include<fstream>
using namespace std;
#define maxn 10000005
#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=x[j]%d/e;
            z[m]++;
            y[m][z[m]]=x[j]; }
        l=1;
        for(j=0;j<=9;j++)
            for(k=1;k<=z[j];k++)
            {x[l]=y[j][k];l++;}
        e=e*10;d=d*10;
    }
}

int main()
{
    ifstream f("radixsort.in");
    ofstream g("radixsort.out");
    int i,j=2;
    f>>n>>a>>b>>c;
    v[1]=x[1]=b;
    for(i=2;i<=n;i++)
    {
        v[i]=(a*v[i-1]+b)%c;
        if(i%10==1) {x[j]=v[i]; j++;}
    }
    n=j-1; j=0;
    while(c>0) {j++; c=c/10;}

    radixsort(j,n);

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

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