Pagini recente » Cod sursa (job #2180048) | Cod sursa (job #583566) | Cod sursa (job #2846568) | Cod sursa (job #1746591) | Cod sursa (job #2417469)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10000005;
int v[MAXN], bucket[1 << 17], sorted[MAXN];
int n;
void rsort(int bucketsize, int nrbuc){
int mask = (1 << 16) - 1, lim = 1 << 16;
for(int i = 0; i < lim; ++i)
bucket[i] = 0;
for(int i = 1; i <= n; ++i){
int pos = (v[i] >> (bucketsize * nrbuc)) & mask;
bucket[pos]++;
}
for(int i = 1; i < lim; ++i)
bucket[i] += bucket[i - 1];
for(int i = n; i >= 1; --i){
int pos = (v[i] >> (bucketsize * nrbuc)) & mask;
sorted[bucket[pos]] = v[i];
bucket[pos]--;
}
for(int i = 1; i <= n; ++i)
v[i] = sorted[i];
}
int main()
{
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
ios::sync_with_stdio(false);
fin.tie(0);
fout.tie(0);
int A, B, C;
fin >> n >> A >> B >> C;
v[1] = B;
for(int i = 2; i <= n; i++){
int val = static_cast<int>((1LL * A * v[i - 1] + B) % C);
v[i] = val;
}
for(int i = 0; i <= 1; i++)
rsort(16, i);
for(int i = 1; i <= n; i += 10)
fout << v[i] << " ";
return 0;
}