Pagini recente » Cod sursa (job #908850) | Cod sursa (job #2915403) | Cod sursa (job #1409748) | Cod sursa (job #235410) | Cod sursa (job #1471202)
#include<stdio.h>
#include<stdlib.h>
int n,v[10000001],i,*t,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,t=(int*)malloc(n*sizeof(int)),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]);
}