Pagini recente » Cod sursa (job #2511611) | Cod sursa (job #1853394) | Cod sursa (job #783992) | Cod sursa (job #1407457) | Cod sursa (job #3233246)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
void radixSort(vector<long long>& arr, int n) {
long long maxElement = *max_element(arr.begin(), arr.end());
for (long long exp = 1; maxElement / exp > 0; exp *= 10) {
vector<long long> output(n);
int count[10] = {0};
for (int i = 0; i < n; i++) {
count[(arr[i] / exp) % 10]++;
}
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}
for (int i = n - 1; i >= 0; i--) {
output[count[(arr[i] / exp) % 10] - 1] = arr[i];
count[(arr[i] / exp) % 10]--;
}
for (int i = 0; i < n; i++) {
arr[i] = output[i];
}
}
}
int main() {
ifstream infile("radixsort.in");
ofstream outfile("radixsort.out");
long long N, A, B, C;
infile >> N >> A >> B >> C;
vector<long long> v(N);
v[0] = B;
for (int i = 1; i < N; i++) {
v[i] = (A * v[i - 1] + B) % C;
}
radixSort(v, N);
for (int i = 0; i < N; i += 10) {
outfile << v[i] << " ";
}
infile.close();
outfile.close();
return 0;
}