Pagini recente » Cod sursa (job #2809229) | Cod sursa (job #521095) | Cod sursa (job #2514062) | Cod sursa (job #3254323) | Cod sursa (job #2253245)
#include <bits/stdc++.h>
using namespace std;
int values[10000000];
vector <int> ordered(10000000);
void radixSort(int arr[], int n, int exp){
int k = 0;
vector <int> bucket(256, 0);
for (int i = 1; i <= n; i++){
bucket[(arr[i] >> (8 * exp)) & 255]++;
}
for (int i = 1; i<= 255; i++) {
bucket[i] += bucket[i - 1];
}
for (int i = n; i >= 1; i --){
ordered[bucket[(arr[i] >> (8 * exp)) & 255]] = arr[i];
bucket[(arr[i] >> (8 * exp)) & 255]--;
}
for (int i = 1; i <= n; ++ i) {
arr[i] = ordered[i];
}
}
int main() {
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n, a, b, c;
int max;
f >> n >> a >> b >> c;
for (int i = 1; i <= n; i ++){
if (i == 1){
values[i] = b;
max = values[i];
}
else{
values[i] = (1LL * a * values[i - 1] + b) % c;
if (values[i] > max){
max = values[i];
}
}
}
for (int i = 0; i <= 3; ++ i)
{
radixSort(values, n, i);
}
for ( int i = 1; i <= n ;i += 10){
g << values[i] << " ";
}
return 0;
}