Cod sursa(job #1142266)

Utilizator rootsroots1 roots Data 13 martie 2014 17:39:54
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <vector>
#define Nmax 100002
#define pb push_back

using namespace std;

int i, n, a, b, c, Max;
long long v[10000002];

vector <int> C[10];

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

   k=0;
   for(i=0;i<=9;++i)
     { for(j=0;j<C[i].size();++j)
          v[++k]=C[i][j];
      C[i].clear();
    }
    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; Max=0;
    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;
}