Pagini recente » Cod sursa (job #1681304) | Cod sursa (job #590306) | Cod sursa (job #2818795) | Cod sursa (job #2827195) | Cod sursa (job #1493220)
#include <fstream>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
void radix_sort(vector <int> &v) {
int i, j;
int counter[1<<8];
vector <int> backup(v);
for(i = 0; i < 32; i+=8) {
memset(counter, 0, sizeof(counter));
for(j = 0; j < v.size(); j++) {
counter[(v[j]>>i) & 255]++;
backup[j] = v[j];
}
for(j = 1; j < 256; j++)
counter[j] += counter[j-1];
for(j = v.size()-1; j>=0; j--) {
counter[(backup[j]>>i) & 255] --;
v[counter[(backup[j]>>i) & 255]] = backup[j];
}
}
}
int main() {
int N;
f>>N;
vector <int> v(N);
int A,B,C;
f>>A>>B>>C;
v[0] = B;
for(int i = 1; i < N ; i++)
{
v[i]=(1LL*A*v[i-1]+B)%C;
}
radix_sort(v);
for(int i = 0; i < N; i += 10)
g<<v[i]<<' ';
}