Cod sursa(job #1868331)

Utilizator mihneacazCazacu Mihnea mihneacaz Data 4 februarie 2017 20:32:51
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
#include<cstring>
using namespace std;
const int NMAX=10000005;
int v[NMAX],aux[NMAX],mod[270];
void rs(int n)
{
    int buck,i;
    for(buck=0; buck<=24; buck+=8)
    {
        for(i=1; i<=n; i++)
            mod[(v[i]>>buck)&255]++;
        for(i=1; i<=256; i++)
            mod[i]+=mod[i-1];
        for(i=n; i>=1; i--)
            aux[mod[(v[i]>>buck)&255]--]=v[i];
        for(i=1; i<=n; i++)
            v[i]=aux[i];
        memset(mod,0,sizeof(mod));
        memset(aux,0,sizeof(aux));
    }
}
int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    int t,n,sum,i,k,a,b,c;
    scanf("%d%d%d%d",&n,&a,&b,&c);
    for(i=1; i<=n; ++i)
        v[i]=(1LL*a*v[i-1]+b)%c;
    rs(n);
    for(i=1; i<=n; i+=10)
        printf("%d ",v[i]);
    printf("\n");
    return 0;
}