Cod sursa(job #1497250)

Utilizator danstefanDamian Dan Stefan danstefan Data 6 octombrie 2015 15:48:25
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <cstdio>
#include <queue>
#define M (1 << 12)
using namespace std;
int in,j,v[10000010],n,i,k;
long long a,b,c;
queue <int> q[M];
int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    scanf("%d%lld%lld%lld",&n,&a,&b,&c);
    v[1] = b;
    for(i=2; i<=n; ++i)v[i] = (1LL*a* v[i-1] +b) %c;
    for(in=0; in<32; in+=12)
    {
        for(i=1; i<=n; ++i)
            q[(v[i]>>in)&(M-1)].push(v[i]);
        j=0;
        for(i=0;i<M;++i)
        while(!q[i].empty())
        {
            v[++j]=q[i].front();
            q[i].pop();
        }
    }
    for(i=1; i<=n; i+=10)printf("%d ",v[i]);
    return 0;
}