Pagini recente » Cod sursa (job #1912913) | Borderou de evaluare (job #1303670) | Cod sursa (job #491659) | Cod sursa (job #1386627) | Cod sursa (job #1376340)
#include<fstream>
#include<algorithm>
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<<8],st[1<<8];
int main(){
in>>N>>a>>b>>c;
v[p][1]=b; for(int i=2;i<=N;i++) v[p][i]=(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;
}