Pagini recente » Cod sursa (job #1396845) | Cod sursa (job #92826) | Cod sursa (job #130366) | Cod sursa (job #2012522) | Cod sursa (job #1251507)
#include <fstream>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
queue<int> bucket1[256];
queue<int> bucket2[256];
int main() {
int a, b, c, n;
fin >> n >> a >> b >> c;
int val = b;
for (int i = 1; i < n; ++i) {
bucket1[val & 0x000000ff].push(val);
val = (a * val + b) % c;
}
bucket1[val & 0x000000ff].push(val);
for (int b = 0; b < 256; ++b) {
while (!bucket1[b].empty()) {
val = bucket1[b].front();
bucket1[b].pop();
bucket2[(val & 0x0000ff00) >> 8].push(val);
cout << ((val & 0x0000ff00) >> 8) << " ";
}
}
return 0;
for (int b = 0; b < 256; ++b) {
while (!bucket2[b].empty()) {
val = bucket2[b].front();
bucket2[b].pop();
bucket1[(val & 0x00ff0000) >> 16].push(val);
}
}
for (int b = 0; b < 256; ++b) {
while (!bucket1[b].empty()) {
val = bucket1[b].front();
bucket1[b].pop();
bucket2[(val & 0xff000000) >> 24].push(val);
}
}
int count = 0;
for (int b = 0; b < 256; ++b) {
while (!bucket2[b].empty()) {
if (count % 10 == 0) {
fout << bucket2[b].front() << " ";
}
bucket2[b].pop();
++count;
}
}
return 0;
}