Cod sursa(job #2301898)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 decembrie 2018 17:17:43
Problema Radix Sort Scor 30
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
#define N 10000001
int n,v[N],i,t[N],r,a,b,c;
void C(int u[],int w[],int b) {
    int c[256]={0},x[256],i;
    for(i=0;i<n;i++)
        c[(u[i]>>(b*8))&(0xFF)]++;
    for(x[0]=0,i=1;i<256;i++)
        x[i]=x[i-1]+c[i-1];
    for(i=0;i<n;i++)
        w[x[(u[i]>>(b*8))&(0xFF)]++]=u[i];
}
int main() {
    freopen("radixsort.in","r",stdin),
    freopen("radixsort.out","w",stdout),
    scanf("%d%d%d%d",&n,&a,&b,&c),v[0]=b%c,r=sizeof(v[0]);
    for(i=1;i<n;i++)
        v[i]=(1LL*a*v[i-1]%c+b)%c;
    for(i=0;i<r;i++)
        C(i&1?t:v,i&1?v:t,i);
    for(i=0;i<n;i+=10)
        printf("%d ",v[i]);
}