Pagini recente » Cod sursa (job #275008) | Monitorul de evaluare | Istoria paginii runda/buby_nebuna/clasament | Cod sursa (job #2805871) | Cod sursa (job #1471196)
#include<stdio.h>
int n,v[10000001],i,u[10000001],r,a,b,c,x[256],y[256];
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]);
}