Pagini recente » Cod sursa (job #3168831) | Cod sursa (job #2689336) | Cod sursa (job #2125102) | Cod sursa (job #768376) | Cod sursa (job #2368199)
#include <fstream>
#include <vector>
#include <queue>
#include <string>
#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();
}
}
string msg;
for(i=1; i<=n; i+=10){
msg = std::to_string(v[i]) + ' ';
g << msg;
}
return 0;
}