Pagini recente » Cod sursa (job #2680767) | Cod sursa (job #2554026) | Cod sursa (job #2608381) | Cod sursa (job #168815) | Cod sursa (job #2417377)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
const int nmax=10000005;
int *v, *t;
int n;
void sortbyte(int i){
int cnt[255],nr[255];
memset(cnt,0,sizeof cnt);
for(int j=1;j<=n;++j){
int d=(v[j]>>(8*i))&0xff;
cnt[d]++;
}
nr[0]=1;
for(int j=1;j<=255;++j)
nr[j]=nr[j-1]+cnt[j-1];
for(int j=1;j<=n;++j)
t[nr[(v[j]>>(8*i))&0xff]++]=v[j];
int *temp=v;
v=t;
t=temp;
}
void radixsort(){
for(int i=0;i<4;++i)
sortbyte(i);
}
int main()
{
int a,b,c,prev=0;
v=new int[10000005];
t=new int[10000005];
fin>>n>>a>>b>>c;
for(int i=1;i<=n;++i)
v[i]=(prev=(a*1LL*prev+b)%c);
for(int i=1;i<=n;++i)
fin>>v[i];
radixsort();
for(int i=1;i<=n;++i)
if(i%10==1)
fout<<v[i]<<' ';
return 0;
}
/*for(int i=0;i<=255;++i){
while(!rs[0][i].empty()){
int e=rs[0][i].front();
rs[1][(e & 0x0000ff00)>>8].push_back(e);
rs[0][i].pop_front();
}
}
for(int i=0;i<=255;++i){
while(!rs[1][i].empty()){
int e=rs[1][i].front();
rs[0][(e & 0x00ff0000)>>16].push_back(e);
rs[1][i].pop_front();
}
}
for(int i=0;i<=255;++i){
while(!rs[0][i].empty()){
int e=rs[0][i].front();
rs[1][(e & 0xff000000)>>24].push_back(e);
rs[0][i].pop_front();
}
}
for(int i=0;i<=255;++i){
while(!rs[1][i].empty()){
++k;
if(k%10==1)
fout<<rs[1][i].front()<<' ';
rs[1][i].pop_front();
}
}*/