Pagini recente » Cod sursa (job #2697847) | Cod sursa (job #686107) | Cod sursa (job #3175633) | Cod sursa (job #860481) | Cod sursa (job #1869613)
#include <cstdio>
#include <deque>
#define NMax 10000000
#define VMax 256
using namespace std;
deque<int> q[VMax+1];
int v[NMax+1];
int main(){
FILE* fin = fopen("radixsort.in","r");
FILE* fout = fopen("radixsort.out","w");
int i,x,y,N,A,B,C;
fscanf(fin,"%d %d %d %d",&N,&A,&B,&C);
for(v[1] = B, i = 2; i <= N; ++i) v[i] = (1LL * A * v[i-1] + B) % C;
for(x = 0; x < 3; ++x)
{
for(i = 1; i <= N; ++i){
y = (v[i] >> (8 * x)) & 255;
q[y].push_back(v[i]);
}
for(N = i = 0; i < 256; ++i)
while(!q[i].empty()){
v[++N] = q[i].front();
q[i].pop_front();
}
}
for(i = 1; i <= N; i += 10) fprintf(fout,"%d ",v[i]);
fclose(fin);
fclose(fout);
return 0;
}