Pagini recente » Cod sursa (job #2507133) | Cod sursa (job #1183423) | Cod sursa (job #435393) | Cod sursa (job #1414393) | Cod sursa (job #1370022)
#include<fstream>
#include<cstdio>
using namespace std;
ifstream fin("radixsort.in");
//ofstream fout("radixsort.out");
unsigned int *t0, *t1, *aux, k1, k2, aa, bb, cc, a[2][10000009], pr[10000], ul[10000], n, i, nr[10000], cif, k, x, baza;
long long p, p1;
int main()
{
FILE *fout;
fout=fopen("radixsort.out","w");
baza=256;
fin>>n>>aa>>bb>>cc;
p=1;
a[0][1]=bb;
nr[a[0][1]/p%baza]++;
for(i=2;i<=n;i++)
{
x=((long long)aa*a[0][i-1]+bb)%cc;
a[0][i]=x;
nr[x/p%baza]++;
}
for(k=1;k<=4;k++)
{
pr[0]=1;
ul[0]=0;
for(i=1;i<=baza-1;i++)
{
pr[i]=pr[i-1]+nr[i-1];
ul[i]=pr[i]-1;
nr[i-1]=0;
}
nr[baza-1]=0;
p1=p*baza;
k2=k%2;
k1=1-k2;
for(i=1;i<=n;i++)
{
x=a[k1][i];
cif=x/p%baza;
ul[cif]++;
a[k2][ul[cif]]=x;
nr[x/p1%baza]++;
}
p=p1;
}
for(i=1;i<=n;i=i+10)
{
//fout<<a[0][i]<<" ";
fprintf(fout,"%ud ",a[0][i]);
}
//fout<<"\n";
//fout.close();
fclose(fout);
fin.close();
return 0;
}