Pagini recente » Cod sursa (job #2076725) | Cod sursa (job #1930033) | Cod sursa (job #3182938) | Cod sursa (job #2786295) | Cod sursa (job #1766150)
#include <stdio.h>
#include <string.h>
int cnt[256],ind[256],init[10000000],temp[10000000],n,i,a,b,c;
inline void sort(int * a, int * b,int x)
{
memset(cnt,0,sizeof(cnt));
for (i=0;i<n;++i)
cnt[(a[i]>>x) & 255]++;
for (i=1;i<256;++i)
ind[i]=ind[i-1]+cnt[i-1];
for (i=0;i<n;++i)
b[ind[(a[i]>>x) & 255]++]=a[i];
}
int main(int argc, char const *argv[])
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
init[0]=b%c;
for (i=1;i<n;++i)
init[i]=(1LL*init[i-1]*a%c+b)%c;
sort(init,temp,0);
sort(temp,init,8);
sort(init,temp,16);
sort(temp,init,24);
for (i=0;i<n;i+=10)
printf("%d ",init[i]);
fclose(stdin);
fclose(stdout);
return 0;
}