Pagini recente » Cod sursa (job #2928063) | Cod sursa (job #2134190) | Cod sursa (job #3199400) | Cod sursa (job #3265294) | Cod sursa (job #2637233)
#include <fstream>
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
const int N = 10000000, MOD = (1 << 16);
int n, a, b, c, v[N + 5], aux[N + 5], freq[MOD + 5], p, i;
int main(){
fin >> n >> a >> b >> c;
v[1] = b;
for (i = 2; i <= n; i ++) {
int64_t val = (long long)v[i - 1] * a + b;
v[i] = val - (val / c) * c;
}
for (p = 0; p < 32; p += 16) {
for (i = 0; i < MOD; i ++)
freq[i] = 0;
for (i = 1; i <= n; i ++)
freq[(v[i] >> p) % MOD] ++;
for (i = 1; i < MOD; i ++)
freq[i] += freq[i - 1];
for (i = n; i > 0; i --)
aux[freq[(v[i] >> p) % MOD]] = v[i], freq[(v[i] >> p) % MOD] --;
for (i = 1; i <= n; i ++)
v[i] = aux[i];
}
for (i = 1; i <= n; i += 10)
fout << v[i] << ' ';
return 0;
}