Pagini recente » Cod sursa (job #1219769) | Cod sursa (job #93214) | Cod sursa (job #483085) | Cod sursa (job #349726) | Cod sursa (job #1111542)
#include <fstream>
#include <vector>
#include <list>
int main(){
std::ifstream fin("radixsort.in");
std::ofstream fout("radixsort.out");
unsigned N,A,B,C;
fin>>N>>A>>B>>C;
std::vector<unsigned> num(N);
std::vector<std::list<unsigned> > v(256);
num[0]=B;
for(unsigned i=1;i<N;++i){
num[i]=(A*num[i-1]+B)%C;
}
unsigned c=0xFF;
for(unsigned i=0;i<4;++i){
for(unsigned k=0;k<N;++k)
v[ (num[k]&c)>>(8*i) ].push_back(num[k]);
unsigned k=0;
for(unsigned j=0;j<256;++j){
if(v[j].size())
for(auto it=v[j].begin();it!=v[j].end();++it)
num[k++]=*it;
}
c<<=8;
for(unsigned j=0;j<256;++j) v[j].clear();
}
for(unsigned i=0;i<N;i+=10) fout<<num[i]<<' ';
fout<<'\n';
}