Pagini recente » Cod sursa (job #2298208) | Cod sursa (job #3182854) | Cod sursa (job #3244390) | Cod sursa (job #3259625) | Cod sursa (job #3291589)
#include <bits/stdc++.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int maxi=-1,n,x,y,z;
int a[1000005];
void countsort(int n, int exp)
{
int aux[n],fr[15];
memset(fr,0,sizeof(fr));
for (int i=1; i<=n; i++ )
{
int cif=(a[i]/exp)%10;
fr[cif]++;
}
for (int i=1; i<=9; i++ )
fr[i]+=fr[i-1]; // sp
for (int i=n; i>=1; i-- )
{
int cif=(a[i]/exp)%10;
aux[fr[cif]]=a[i];
fr[cif]--;
}
for (int i=1; i<=n; i++ )
a[i]=aux[i];
}
void radix()
{
int exp=1;
while ( maxi/exp>0 )
{
countsort(n,exp);
exp*=10;
}
}
int main()
{
///////// a b c
f >> n >> x >> y >> z;
a[1]=y;
maxi=a[1];
for (int i=2; i<=n; i++ )
{
a[i]=(x*a[i-1]+y)%z;
maxi=max(maxi,a[i]);
}
radix();
for (int i=1; i<=n; i+=10 )
g << a[i] << " ";
return 0;
}