Pagini recente » Cod sursa (job #1415117) | Cod sursa (job #2527412) | Cod sursa (job #2801677) | Cod sursa (job #1356339) | Cod sursa (job #1413352)
#include<fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
const int Nmax = 10000001;
int N,v[2][Nmax],a,b,c,p;
int m[1<<10],st[1<<10];
int main(){
in>>N>>a>>b>>c;
v[p][1]=b; for(int i=2;i<=N;i++) v[p][i]=(1LL*a*v[p][i-1]+b)%c;
for(int k=0;k<=3;k++){
p=!p;
for(int i=0;i<(1<<8);i++) m[i]=0,st[i]=1;
for(int i=1;i<=N;i++) m[(v[!p][i]>>(8*k))%(1<<8)]++;
for(int i=1;i<(1<<8);i++) m[i]+=m[i-1];
for(int i=1;i<=N;i++){
int w=(v[!p][i]>>(8*k))%(1<<8),l=(w>0?m[w-1]:0);
v[p][l+st[w]]=v[!p][i],st[w]++;
}
}
for(int i=1;i<=N;i+=10) out<<v[p][i]<<' ';out<<'\n';
return 0;
}