Cod sursa(job #1471198)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 14:07:39
Problema Radix Sort Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
int n,v[10000001],i,u[10000001],r,a,b,c,x[256],y[256],j;
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++) {
        if(i&1)
            for(j=1;j<n;j++)
                u[i]^=v[i]^=u[i]^=v[i];
        for(j=0;j<n;j++)
            y[(v[j]>>(i*8))&(0xFF)]++;
        for(x[0]=0,j=1;j<256;j++)
            x[j]=x[j-1]+y[j-1];
        for(j=0;j<n;j++)
            u[x[(v[j]>>(i*8))&(0xFF)]++]=v[j];
    }
	for(i=0;i<n;i+=10)
		printf("%d ",v[i]);
}