Pagini recente » Cod sursa (job #2552562) | Cod sursa (job #1374570) | Cod sursa (job #877703) | Cod sursa (job #58376) | Cod sursa (job #1356350)
#include<fstream>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
typedef int var;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define NO 256
var B[NO];
var V[10000002], W[10000002];
var *V1 = V, *V2 = W;
var n;
inline int getByte(int x, int b) {
return ((x >> (8 * b)) & 0xFF);
}
void radixsort() {
for(var pass = 0; pass < 4; pass++) {
memset(B, 0, sizeof(B));
for(var i=1; i<=n; i++) {
B[getByte(V1[i], pass)]++;
}
for(var i=1; i<NO; i++) {
B[i] += B[i-1];
}
for(var i=n; i; i--) {
V2[B[getByte(V1[i], pass)] --] = V1[i];
}
swap(V2, V1);
}
}
int main() {
var a, b, c;
fin>>n>>a>>b>>c;
V1[1] = b;
for(var i=2; i<=n; i++) {
V1[i] = ((1LL*a)*V[i-1] + b)%c;
}
radixsort();
freopen("radixsort.out", "w", stdout);
for(var i=1; i<=n; i+=10) {
printf("%d ", V1[i]);
}
return 0;
}