Pagini recente » Cod sursa (job #1066823) | Cod sursa (job #2584681) | Cod sursa (job #2894211) | Cod sursa (job #2462717) | Cod sursa (job #3160715)
#include <stdio.h>
#define ull unsigned long long
void rsort(ull v[], ull n, ull d, ull t[][2]) {
ull iv[2];
iv[0]=0;
iv[1]=0;
for(ull i=0;i<n;++i) {
ull p=((ull)(1))&(v[i]>>d),s;
s=iv[p];
t[s][p]=v[i];
++iv[p];
}
for(ull i=0;i<iv[0];++i)
v[i]=t[i][0];
for(ull i=0;i<iv[1];++i)
v[iv[0]+i]=t[i][1];
}
void radixsort(ull v[], ull n) {
ull t[n][2];
for(ull i=0;i<64;++i) {
rsort(v,n,i,t);
}
}
int main() {
FILE *fin=fopen("radixsort.in","r");
ull n,a,b,c;
fscanf(fin,"%llu %llu %llu %llu",&n,&a,&b,&c);
fclose(fin);
ull v[n];
*v=b;
for(ull i=1;i<n;++i) v[i]=(a*v[i-1]+b)%c;
radixsort(v,n);
FILE *fout=fopen("radixsort.out","w");
for(int i=0;i<n;i+=10) fprintf(fout,"%llu ",v[i]);
return 0;
}