Pagini recente » Cod sursa (job #1387609) | Cod sursa (job #2870444) | Cod sursa (job #2565195) | Cod sursa (job #2269518) | Cod sursa (job #2368204)
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n, a, b, c;
queue <int> q[256];
vector <int> v;
int main()
{
int e = 0, p = 1, w;
int i, j;
f >> n >> a >> b >> c;
v.push_back(0);
v.push_back(b);
for(i=2; i<=n; ++i)
v.push_back( (1LL * a * v[i - 1] + b) % c );
for(j=0; j<=24; j+=8){
for(i=1; i<=n; ++i)
q[(v[i]>>j) & 255].push(v[i]);
e = 0;
for(w=0; w<=255 && e<n; ++w)
while(!q[w].empty()){
v[++e] = q[w].front();
q[w].pop();
}
}
for(i=1; i<=n; i+=10)
g << v[i] << ' ';
return 0;
}