Pagini recente » Cod sursa (job #1119321) | Cod sursa (job #2634832) | Cod sursa (job #2225046) | Cod sursa (job #501319) | Cod sursa (job #2124259)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <stdio.h>
using namespace std;
ifstream fin("radixsort.in");
int n;
void csort(vector<int>& vv, vector<int>& v, int cifra,int nr) {
int i;
int op;
int f[256];
for(i=0;i<=255;++i){
f[i] = 0;
}
for(i=0;i<n;++i){
++f[(v[i]&cifra)>>nr];
}
for(i=0;i<255;++i){
f[i+1] +=f[i];
}
for(i=n - 1;i>=0;--i){
op = (v[i]&cifra)>>nr;
vv[f[op]-1] = v[i];
--f[op];
}
}
int main()
{
freopen ("radixsort.out","w",stdout);
long long x;
vector<int> w;
vector<int> u(10000000);
long long a,b,c,i;
fin >> n >> a >> b >> c;
x = b;
w.push_back(x);
for(i=2;i<=n;++i){
x = (a*x + b)%c;
w.push_back(x);
}
csort(u,w,0x000000ff,0);
csort(w,u,0x0000ff00,8);
csort(u,w,0x00ff0000,16);
csort(w,u,0x7f000000,24);
for(i=0;i<n;i+=10){
printf("%d ",w[i]);
}
return 0;
}