Pagini recente » Cod sursa (job #1583958) | Cod sursa (job #2911159) | Cod sursa (job #176537) | Cod sursa (job #2417858) | Cod sursa (job #3258345)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int sir[10000000][2];
int main()
{
int n, a, b, c, maxim=0, i, pow2=1, j, sor, care=1;
fin>>n>>a>>b>>c;
sir[0][0]=b;
for(i=1;i<n;i++){
sir[i][0]=(a*sir[i-1][0]+b)%c;
//cout<<sir[i][0]<<" ";
}
for(i=1;i<n;i++){
if (sir[i][0]>maxim)maxim=sir[i][0];
}
while((1<<pow2)<maxim){
pow2++;
}
for(i=0;i<=pow2;i++){
sor=0;
care=(care+1)%2;
for(j=0; j<n; j++){
if((sir[j][care]&(1<<i))==0){
sir[sor][(care+1)%2]=sir[j][care];
sor++;
//cout<<sor<<" ";
}
}
for(j=0; j<n; j++){
if((sir[j][care]&(1<<i))>0){
sir[sor][(care+1)%2]=sir[j][care];
sor++;
//cout<<sor<<" ";
}
}
for(j=0; j<n; j++){
//cout<<(sir[j][(care+1)%2]&(1<<i))/(1<<i);
}
//cout<<endl;
}
for(i=0;i<n;i+=10){
fout<<sir[i][care%2]<<" ";
}
return 0;
}