Pagini recente » Cod sursa (job #2095731) | Cod sursa (job #772825) | Cod sursa (job #2852707) | Cod sursa (job #55954) | Cod sursa (job #2613762)
#include<fstream>
#include<iostream>
#include<vector>
#define BITS 16
#define MASK ((1 << BITS) - 1)
#define MAX_N 10000000
using namespace std;
int v[MAX_N + 1], aux[MAX_N + 1];
void radixSort(int x[], int Size, int y[], int bits) {
vector<int>g[1 << BITS];
for(int i = 0; i < Size; ++i) {
int nrList = (x[i] >> bits) & MASK;
g[nrList].emplace_back(x[i]);
}
int len = 0;
for(unsigned i = 0; i <= MASK; i++) {
for(unsigned j = 0; j < g[i].size(); ++j)
y[len++] = g[i][j];
}
}
int main() {
int n, a, b, c;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
fin >> n >> a >> b >> c;
v[0] = b;
for(int i = 1; i < n; ++i)
v[i] = (1LL * a * v[i - 1] + b) % c;
radixSort(v, n, aux, 0);
radixSort(aux, n, v, BITS);
for(int i = 0; i < n; i += 10)
fout << v[i] << " ";
fout << "\n";
fin.close();
fout.close();
return 0;
}