Nu aveti permisiuni pentru a descarca fisierul grader_test4.ok
Cod sursa(job #2717083)
| Utilizator | Data | 6 martie 2021 12:19:16 | |
|---|---|---|---|
| Problema | Radix Sort | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.02 kb |
#include <fstream>
using namespace std;
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
const int NMAX = 1e7;
const int BYTE = 8;
int N, A, B, C;
int v[NMAX + 2], aux[NMAX + 2];
int cnt[(1 << BYTE) + 2];
int main()
{
cin >> N >> A >> B >> C;
v[1] = B;
for(int i = 2; i <= N; i++) {
v[i] = (1LL * A * v[i - 1] + B) % C;
}
for(int i = 1; i <= 4; i++) {
for(int j = 0; j < (1 << BYTE); j++) {
cnt[j] = 0;
}
for(int j = 1; j <= N; j++) {
cnt[(v[j] >> ((i - 1) * BYTE)) & ((1 << BYTE) - 1)]++;
}
for(int j = 0; j < (1 << BYTE); j++) {
cnt[j + 1] += cnt[j];
}
for(int j = N; j >= 1; j--) {
aux[cnt[(v[j] >> ((i - 1) * BYTE)) & ((1 << BYTE) - 1)]--] = v[j];
}
for(int j = 1; j <= N; j++) {
v[j] = aux[j];
}
}
for(int i = 1; i <= N; i += 10) {
cout << v[i] << ' ';
}
return 0;
}
