Pagini recente » Cod sursa (job #2389779) | Cod sursa (job #698997) | Cod sursa (job #1696116) | Cod sursa (job #3183390) | Cod sursa (job #2648771)
#include <iostream>
#include <fstream>
using namespace std;
const int MAXN = 1e7+1;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c;
int v[MAXN];
void count_sort(int pow){
int output[n];
int i, count[10] = {0};
for (i = 0; i < n; i++)
count[(v[i]/pow)%10 ]++;
for (i = 1; i < 10; i++)
count[i] += count[i - 1];
for (i = n - 1; i >= 0; i--){
output[count[(v[i]/pow)%10 ]-1] = v[i];
count[(v[i]/pow)%10]--;
}
for (i = 0; i < n; i++)
v[i] = output[i];
}
int maxi_d(){
int mv = v[0] = b;
for(int i=1;i<n;i++){
v[i] = (a*v[i-1]+b)%c;
mv = max(mv, v[i]);
}
return mv;
}
void radix_sort(){
int maxi = maxi_d();
for(int pow = 1;maxi/pow>0;pow*=10)
count_sort(pow);
}
int main() {
fin>>n>>a>>b>>c;
radix_sort();
for(int i=0;i<n;i+=10)
fout<<v[i]<<' ';
return 0;
}