Pagini recente » Cod sursa (job #1706508) | Cod sursa (job #1962437) | Cod sursa (job #650238) | Cod sursa (job #800146) | Cod sursa (job #1697870)
#include <fstream>
#include <vector>
using namespace std;
const int N_MAX = 10000050;
const int BYTE_SIZE = 256;
int n, a, b, c;
int v[N_MAX];
int GetByte(int x, int b) {
return (x >> b) & 255;
}
void CountingSort(int b) {
vector<int> cnt[BYTE_SIZE];
for(int i = 1; i <= n; i++)
cnt[GetByte(v[i], b)].push_back(v[i]);
for(int i = 0, n = 0; i < BYTE_SIZE; i++)
for(auto x : cnt[i])
v[++n] = x;
}
void RadixSort() {
for(int i = 0; i < 32; i += 8)
CountingSort(i);
}
int main() {
ifstream f("radixsort.in");
ofstream g("radixsort.out");
f >> n >> a >> b >> c;
v[1] = b;
for(int i = 2; i <= n; i++)
v[i] = (int64_t(a) * v[i - 1] + b) % c;
RadixSort();
for(int i = 1; i <= n; i += 10)
g << v[i] << ' ';
return 0;
}