Pagini recente » Cod sursa (job #3322604) | Cod sursa (job #3355879) | Cod sursa (job #3338552) | Cod sursa (job #3348749) | Cod sursa (job #3328490)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define MAX_N 10000000
#define MAX_BITS 32
#define BITS_PER_STEP 8
const int BASE = 1 << BITS_PER_STEP;
const int MASK = BASE - 1;
int v[MAX_N];
vector<int> bucket[BASE];
void radsort(int n, int bits){
if(bits == MAX_BITS){
return;
}
int i, b;
unsigned int j;
for(i = 0; i < n; i++){
bucket[v[i] >> bits & MASK].push_back(v[i]);
}
i = 0;
for(b = 0; b < BASE; b++){
for(j = 0; j < bucket[b].size(); j++){
v[i++] = bucket[b][j];
}
bucket[b].clear();
}
radsort(n, bits + BITS_PER_STEP);
}
int main()
{
int n, a, b, c, i;
fin>>n>>a>>b>>c;
v[0] = b;
for(i = 1; i < n; i++){
v[i] = (1LL * a * v[i - 1] + b) % c;
}
radsort(n, 0);
for(i = 0; i < n; i += 10){
fout<<v[i]<<" ";
}
fin.close();
fout.close();
return 0;
}