Pagini recente » Istoria paginii preoni-2008/clasament/runda-1/10 | Cod sursa (job #167982) | Cod sursa (job #1891415) | Cod sursa (job #2350983) | Cod sursa (job #2491632)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n,maxim,A,B,C;
int v[1001005],aux[1001005],f[260];
void counting(int putere){
memset(f,0,sizeof(f));
for(int i=0;i<n;i++){
int h=v[i]/putere%256;
f[h]++;
}
for(int i=1;i<256;i++){
f[i]+=f[i-1];
}
for(int i=n-1;i>=0;i--){
int h=v[i]/putere%256;
aux[f[h]-1]=v[i];
f[h]--;
}
for(int i=0;i<n;i++){
v[i]=aux[i];
}
return ;
}
int main(){
fin>>n>>A>>B>>C;
maxim=v[0]=B;
for(int i=1;i<n;i++){
v[i]=(A*v[i-1] +B)%C;
maxim=max(maxim,v[i]);
}
int pow=1;
while(pow<=maxim){
counting(pow);
pow*=256;
}
for(int i=0;i<n;i+=10){
fout<<v[i]<<" ";
}
return 0;
}