Cod sursa(job #1142233)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 13 martie 2014 17:12:08
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>

using namespace std;

int i,n,a,b,c,Max=0;
long long v[10000009],q[10][10000009];

void sortezz(long long p)
{
    int i,k,j;
   for(i=1;i<=n;++i)
   {
     k=v[i]/p%10;
     q[k][++q[k][0]]=v[i];


   }
   k=0;
   for(i=0;i<=9;++i)
     { for(j=1;j<=q[i][0];++j)
      v[++k]=q[i][j];
      q[i][0]=0;}


     if(p*10<=Max) sortezz(p*10);
     else
     for(i=1;i<=n;i+=10)
     printf("%lld ",v[i]);
     printf("\n");

}

int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);

    scanf("%d%d%d%d",&n,&a,&b,&c);

    v[1]=b;
    for(i=2;i<=n;++i)
    {v[i]=(a*v[i-1]+b)%c;if(v[i]>Max) Max=v[i];}

    sortezz(1);

    return 0;
}