Pagini recente » Cod sursa (job #2015829) | Cod sursa (job #513819) | Cod sursa (job #1815189) | Cod sursa (job #1210514) | Cod sursa (job #2618364)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
long int n, a, b, c;
int v[10000000];
short int base = 256;
void radixsort(int v[], int n, short int base = 256){
int counter[base], aux[n], j, i;
for(i = 0; i < 32; i += 8){
for(j = 0; j < 256; j++){
counter[j] = 0;
}
for(j = 0; j < n; j++){
counter[(v[j] >> i) & 255] ++;
}
for(j = 1; j < 256; j++){
counter[j] += counter[j - 1];
}
for (j = n - 1; j >= 0; j--){
counter[(v[j] >> i) & 255] --;
aux[counter[(v[j] >> i) & 255]] = v[j];
}
for(j = 0; j < n; j++){
v[j] = aux[j];
}
}
}
int main()
{
in>>n>>a>>b>>c;
v[0] = b;
for(int i = 0; i < n; i++){
v[i] = (v[i-1]*a + b) % c;
}
radixsort(v,n);
for(int i=0; i < n; i += 10){
out << v[i] << " ";
}
in.close();
out.close();
return 0;
}