Pagini recente » Cod sursa (job #1186341) | Cod sursa (job #2140405) | Cod sursa (job #2235794) | Cod sursa (job #1948802) | Cod sursa (job #2625939)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
long int N, A, B, C;
int v[10000000];
void Radix_Sort(int v[], int n, short int base = 256) {
int count[256], aux[n];
for (int i = 0; i < 32; i += 8) {
for (int j = 0; j < 256; j++)
count[j] = 0;
for (int j = 0; j < n; j++)
count[(v[j] >> i) & 255]++;
for (int j = 1; j < 256; j++)
count[j] += count[j - 1];
for (int j = n - 1; j >= 0; j--) {
count[(v[j] >> i) & 255]--;
aux[count[(v[j] >> i) & 255]] = v[j];
}
for (int j = 0; j < n; j++)
v[j] = aux[j];
}
}
int main() {
f >> N >> A >> B >> C;
v[1] = B;
for (int i = 2; i <= N; i++)
v[i] = ((A * v[i - 1]) + B) % C;
Radix_Sort(v, N + 1);
for (int i = 1; i <= N; i += 10)
g << v[i] << " ";
f.close();
g.close();
return 0;
}