Pagini recente » Cod sursa (job #3201421) | Cod sursa (job #1759915) | Cod sursa (job #2134508) | Cod sursa (job #3201183) | Cod sursa (job #3198482)
#include <fstream>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
long long A,B,C;
int a[2][10000002],n,ok,r,nr[1000000],poz[1000000],vmax,k;
long long p,q;
int main()
{
fin>>n>>A>>B>>C;
a[0][1]=B;
vmax=B;
nr[B%1000000]++;
for(int i=2;i<=n;i++){
a[0][i]=(A * a[0][i-1] + B) % C;
vmax=max(vmax,a[0][i]);
nr[a[0][i]%1000000]++;
}
p=1;
for(k=1;p<=vmax;k=1-k){
poz[0]=0;
for(int i=1;i<=999999999;i++){
poz[i]=poz[i-1]+nr[i-1];
}
for(int i=0;i<=999999999;i++){
nr[i]=0;
}
q=p*1000000;
for(int i=1;i<=n;i++){
int z=a[1-k][i];
int x=z/p%1000000;
a[k][poz[x]+1]=z;
poz[x]++;
nr[z/q%1000000]++;
}
p=q;
}
for(int i=1;i<=n;i=i+10){
fout<<a[1-k][i]<<" ";
}
return 0;
}