Pagini recente » Cod sursa (job #143464) | Cod sursa (job #143432) | Cod sursa (job #1229643) | Cod sursa (job #208764) | Cod sursa (job #3291570)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
long long n, a, b, c, maxi;
vector<long long> v, aux;
void radsort(long long b)
{
aux.clear(); long long fr[35] = {0};
for(auto x : v)
fr[(x / b) % 32] ++, aux.push_back(0);
for(long long i = 1; i <= 31; i ++) fr[i] += fr[i - 1];
for(long long i = n - 1; i >= 0; i --)
{
long long ind = fr[(v[i] / b) % 32] - 1;
aux[ind] = v[i]; fr[(v[i] / b) % 32] --;
}
v = aux;
}
int main()
{
f >> n >> a >> b >> c;
v.push_back(b); maxi = b;
for(long long i = 1; i < n; i ++)
{
long long x = (a * v.back() + b) % c;
maxi = max(maxi, x); v.push_back(x);
}
for(long long i = 1; i < maxi; i *= 32)
radsort(i);
for(long long i = 0; i < n; i += 10)
g << v[i] << " ";
return 0;
}