Pagini recente » Cod sursa (job #415770) | Cod sursa (job #30045) | Cod sursa (job #188197) | Cod sursa (job #2292899) | Cod sursa (job #1164320)
#include <fstream>
#include <vector>
using namespace std;
const int MAX = 10000050;
const int mask = 255;
int N, A, B, C;
int V[MAX];
vector<int> X[mask + 2];
void Sort(int Shift) {
for(int i = 1; i <= N; i++) {
X[(V[i] >> Shift) & mask].push_back(V[i]);
}
for(int i = 0, poz = 0; i <= mask; i++) {
for(size_t j = 0; j < X[i].size(); j++) {
V[++poz] = X[i][j];
} X[i].clear();
}
}
int main() {
ifstream in("radixsort.in");
in >> N >> A >> B >> C;
in.close();
V[1] = B;
for(int i = 2; i <= N; i++)
V[i] = (1LL * A * V[i - 1] + B) % C;
for(int i = 0; i <= 3; i++) {
Sort(i * 8);
}
ofstream out("radixsort.out");
for(int i = 1; i <= N; i += 10)
out << V[i] << " ";
out.close();
}