Pagini recente » Cod sursa (job #903499) | Cod sursa (job #2923041) | Cod sursa (job #2450909) | Cod sursa (job #3272017) | Cod sursa (job #2451155)
#include <bits/stdc++.h>
using namespace std;
size_t v[10000001], A, B, C, N;
vector<vector<size_t>> buckets(10, vector<size_t>());
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int main()
{
fin >> N >> A >> B >> C;
v[1] = B;
size_t MAX{B};
for(size_t i = 2; i <= N; i++)
{
v[i] = (A * v[i - 1] + B) % C;
MAX = max(MAX, v[i]);
}
size_t nr{0};
while(MAX)
{
nr++;
MAX /= 10;
}
for(size_t c = 0; c < nr; c++)
{
for(size_t i = 1; i <= N; i++)
{
size_t copy_c {c}, copy_v{v[i]};
while(copy_c && copy_v){
copy_v /= 10;
copy_c --;
}
buckets[copy_v%10].push_back(v[i]);
}
size_t l{0}, col{0};
for(size_t i = 1; i <= N; i++)
{
if(col == buckets[l].size())
{
col = 0;
l++;
while(buckets[l].size() == 0) l++;
}
v[i] = buckets[l][col];
col++;
}
for(size_t i = 0; i < 10; i++) buckets[i].clear();
}
for(size_t i = 1; i <= N; i += 10) fout << v[i] << " ";
}